一、前序遍历
1. 定义
若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树
2. 算法
typedef Struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
void preOrderTraverse(BiTree T) {
if(NULL == T)
return;
printf("%c",T->data);
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
3. 图解
中序遍历结果:ABDGHCEIF
二、中序遍历
1. 定义
若树为空,则空操作返回,否则从根节点开始(不是先访问根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树
2. 算法
typedef Struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
void midOrderTraverse(BiTree T) {
if(NULL == T)
return;
midOrderTraverse(T->lchild);
printf("%c",T->data);
midOrderTraverse(T->rchild);
}
3. 图解
中序遍历结果:GDHBAEICF
三、后序遍历
1. 定义
若树为空,在空操作返回,否则从左到右先叶子后节点的方式遍历访问左右子树,最后访问根节点
2. 算法
typedef Struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
void postOrderTraverse(BiTree T) {
if(NULL == T)
return;
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
printf("%c",T->data);
}
3. 图解
后序遍历结果为:GHDBIEFCA