1. 二叉树遍历的定义
二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。
2. 前序遍历
遍历的顺序为:ABDGHCEIF
排序算法:
/*二叉树的前序遍历递归算法*/
void PreOrderTraverse(BiTree T)
{
if (nullptr == T)
return;
cout << T->data << endl;
PreOrderTraverse(T->lchild); //遍历左子树
PreOrderTraverse(T->rchild); //遍历右子树
}
3. 中序遍历
遍历的顺序为:GDHBAEICF
排序算法:
/*二叉树的中序遍历递归算法*/
void InOrderTraverse(BiTree T)
{
if (nullptr == T)
return;
InOrderTraverse(T->lchild); //遍历左子树
cout << T->data << endl;
InOrderTraverse(T->rchild); //遍历右子树
}
4. 后续遍历
遍历的顺序为:GHDBIEFCA
排序算法:
/*二叉树的后序遍历递归算法*/
void PostOrderTraverse(BiTree T)
{
if (nullptr == T)
return;
PostOrderTraverse(T->lchild); //遍历左子树
PostOrderTraverse(T->rchild); //遍历右子树
cout << T->data << endl;
}
5. 层序遍历
6. 二叉树的三个性质
1)已知前序遍历序列和中序遍历序列,可以唯一确定一颗二叉树;
2)已知中序遍历序列和后序遍历序列,可以唯一确定一颗二叉树;
3)已知前序遍历序列和后序遍历序列,不可以唯一确定一颗二叉树;