#定义一个二叉树结点#
typedef struct node{
Datatype data; /*相应的数据类型*/
struct node* lchild,rchild; /*表示指向左右子树的指针*/
}BinTNode;
typedef BinTNode* BinTree;
/*前序遍历(先访问根结点,再访问左子树,又再访问右子树)(DLR)*/
void Preorder(BinTree bt){
if(bt != NULL){
printf("%c",bt-data); /*假设数据类型为char*/
Preorder(bt->lchild); /*递归遍历左子树*/
Preorder(bt->rchild); /*递归遍历右子树*/
}
}
/*中序遍历*/
void Inorder(BinTree bt){
if(bt != NULL){
Inorder(bt->lchild);
printf("%c",bt->data);
Inorder(bt->rchild);
}
}
/*后序遍历*/
void Postorder(BinTree bt){
if(bt != NULL){
Postorder(bt->lchild);
Postorder(bt->rchild);
printf("%c",bt->data);
}
}
注意:虽然三种遍历方法非常相似,但实质上的遍历访问结点的顺序天差地别