递归访问二叉树的3种遍历方法

来源:互联网 发布:扫雷java代码 编辑:程序博客网 时间:2024/06/03 22:41
#定义一个二叉树结点#typedef  struct  node{Datatypedata;  /*相应的数据类型*/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);/*递归遍历右子树*/}} /*中序遍历*/voidInorder(BinTree bt){if(bt != NULL){Inorder(bt->lchild);printf("%c",bt->data);Inorder(bt->rchild);}}/*后序遍历*/voidPostorder(BinTree bt){if(bt != NULL){Postorder(bt->lchild);Postorder(bt->rchild);printf("%c",bt->data);}}注意:虽然三种遍历方法非常相似,但实质上的遍历访问结点的顺序天差地别 

原创粉丝点击