二叉树之前序遍历(递归思想)

前序遍历顺序的理解

二叉树是一种递归定义的数据结构,遍历二叉树是学习这种数据结构首先要理解的一个基本操作。其原理是递归思想,首先把代码放出来:

1 void PreOrder(BiTree T){
2     if(T != NULL){
3         printf("%c ",T->data);
4         //访问左子结点
5         PreOrder(T->lchild);
6         //访问右子结点
7         PreOrder(T->rchild);
8     }
9 }

接下来我们逐步分析前序遍历时的递归过程:

首先我们来到根节点A自身调用递归后访问其左节点B

访问B时子节点B自身又调用了一次递归访问B的左节点D

访问D后子节点D再次自身调用一次递归访问D的左节点,因为D的左节点为NULL,故停止D的左节点自身调用递归(D的左节点访问完)。

接着进行下一步,访问D的右节点F

访问子节点F后因其左右节点均为NULL,所以F的左右节点都访问完毕,即D的右节点也访问完毕

然后退回到子节点D的上一步节点B,因为节点D节点B的左节点已经访问完,所以接下来访问B的右节点E

访问E后也因其左右节点均为NULL,所以E的左右节点也都访问完毕(即节点E访问完毕,即B的右节点访问完毕)。

然后退回到E的上一节点B,此时B的左右节点也已经访问完,故退回到B的上一节点A

因为A的左节点B已经访问完毕,所以此时开始访问A的右节点C……后面的步骤参考以上内容。

 

综上,二叉树前序遍历完成后输出顺序为:ABDFECGH

 

谢谢观看,如有问题欢迎提出并指正。

posted @ 2019-03-20 20:05  Maze_End  阅读(452)  评论(0编辑  收藏  举报