遍历二叉树
二叉树是由3个基本单元组成:根结点、左子树、右子树
1.先序遍历(先打印结点数据)
(1)打印结点(根结点和其他结点)的数据内容 (2)先序遍历左子树 (3)先序遍历右子树
void PreOrderTraverse(BiTree T){
if(T){
cout << T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
根据上图二叉树给出程序运行过程: (点击图片即可放大,该图片原版PDF见本人博客资源)
故先序遍历序列为:ABDGHCEIF
2.中序遍历(中间打印结点数据)
(1)中序遍历左子树 (2)打印结点(根结点和其他结点)的数据内容 (3)中序遍历右子树
void InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
cout << T->data;
InOrderTraverse(T->rchild);
}
}
根据上图二叉树给出程序运行过程: (点击图片即可放大,该图片原版PDF见本人博客资源)
故中序遍历序列为:GDHBAEICF
3.后序遍历(后打印结点数据)
(1)后序遍历左子树 (2)后序遍历右子树 (3)打印结点(根结点和其他结点)的数据内容
void PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout << T->data;
}
}
根据上图二叉树给出程序运行过程: (点击图片即可放大,该图片原版PDF见本人博客资源)
故后序遍历序列为:GHDBIEFCA
4.层序遍历
如遇有关这样的题目: 给出二叉树某两个遍历序列,求另一个遍历序列 我们需要明白: 由中序遍历序列可知左右孩子 由后序遍历序列可知根结点
|