1. 先序遍历 遍历过程为: ① 访问根结点; ② 先序遍历其左子树; ③ 先序遍历其右子树。 例子:
A(B D F E )(C G H I) 先序遍历=> A B D F E C G H I
代码如下:
void PreorderTraversal( BiTree BT ) { if( BT ) { /* 此处假设对BT结点的访问就是打印数据 */ printf("%d ", BT->Data );/* 假设数据为整型 */ PreorderTraversal( BT->lchild );//递归先序遍历左子树 PreorderTraversal( BT->rchild );//递归先序遍历右子树 } }2. 中序遍历 遍历过程为: ① 中序遍历其左子树; ② 访问根结点; ③ 中序遍历其右子树。 例子:
(D B E F) A (G H C I) 中序遍历=> D B E F A G H C I
代码如下:
void InorderTraversal( BiTree BT ) { if( BT ) { InorderTraversal( BT->lchild ); /* 此处假设对BT结点的访问就是打印数据 */ printf("%d ", BT->Data); /* 假设数据为整型 */ InorderTraversal( BT->rchlid ); } }3. 后序遍历 遍历过程为: ① 后序遍历其左子树; ② 后序遍历其右子树; ③ 访问根结点。
(D E F B )( H G I C) A 后序遍历=> D E F B H G I C A
代码如下:
void PostorderTraversal( BiTree BT ) { if( BT ) { PostorderTraversal( BT->lchild ); PostorderTraversal( BT->rchlid ); printf("%d ", BT->Data); } }先序、中序和后序遍历过程:遍历过程中经过结点的路线一样,只是访问各结点的时机不同。