树的遍历

首先声明一下,本章节只将理论,后期有空会补充相应代码。

我们知道树的遍历有先序遍历,中序遍历,后序遍历。但是给了我们一棵树,如何根据指定的比遍历方式,得出最终的结果呢,这就是答主接下来要说内容。

ps:时间原因,直接在纸上画了…

首先给出原图:
这是图片

1.先序遍历

这个比较简单,大家一般都能写对。我们知道先序遍历的特点是根左右
则我们:

1、先从结点A出发,判断A是否是根,是,则记录A。

2.下面我们要进行“左”,我们走到了B,这个时候,我们要B看成一颗树,首先我们判断B是否是根结点,是,则记录B

3.接下来我们继续进行操作,这个时候我们发现树B左孩子为空,那么我们需要进行操作。

4.这个时候我们来到C,则我们以C为根,把C以及其子孩子看成一棵树,让后继续遍历
……
……
……
依次这样遍历下去,我们得出最后结果为 ABCDEFGH

2. 中序遍历

前言:首先要知道中序遍历的顺序是 左 根 右

步骤:
1.我们首先从A出发,看看A是否右左孩子,这时候我们发现有左孩子B,则我们来到了左孩子这里。

2.以B出发,将B以及其子孩子看成一棵树,这个时候我们判断B是否有左孩子,发现B 没有左孩子,那么按照中序遍历的规则——左根右,可以知道,没有左孩子了,那我们直接输出根节点B

3.现在我们来到了C,这个时候我们以C为根节点看成一颗树,这个时候,我们发现C有左孩子,那么我们去遍历它的左孩子。

4.现在我们来到了D,发现D没有左孩子,也就是左边已经遍历了,但是没有发现结点,则我们输出根节点D

5.这个时候以C为根结点的树的左孩子已经遍历完,我们可以输出根节点C,接着是它的右孩子E

6.那么,这时以A为根节点的树的左孩子我们已经遍历完,我们可以输出根节点A了
……
……
……
这样遍历下去。我们得到的结果为:BDCEAFHG

3.后序遍历

**前言:我们知道后序遍历的顺序是 左 右 根 **

1.我们首先从A出发,判断一下它是否有左孩子,发现有左孩子B,则来到B

2.以B为出发点看作一棵树,则我们发现B不含有左子树,按照后序遍历规则,我们看到B含有右子
树,则我们来到右子树C

3.我们以C为出发点,看成一颗树,判断C是否有左孩子,发现有,则我们来到了D

4.我们以D为出发点,看成一棵树,判断D是否有左孩子,发现D没有左孩子,再判断D是否有右孩子,发现也没有右孩子,那么我们按照 左右根 的顺序 ,可以输出根结点D

5.现在我们我们回到根节点C,发现C也含有右孩子,那么我们来到它的右孩子E

6.我们来到了E,发现E没有左右孩子,那么我们可以输出根节点E

7.这个时候以C为根节点的树的左右孩子已经遍历完,我们可以输出根节点C

8.以B为根节点树的左右孩子也已经遍历完,可以输出根节点B

9.以A根结点的树的左孩子已经遍历完,我们按照后序遍历顺序,来到以A为根结点的右孩子F以及按照以上规则遍历。

……
……
……
10.最后,我们得出结果为 DECBHGFA

就讲到这里了,如果有错误或者需要改进的地方,请大家及时指出。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值