【C++】求二叉树的前中后序遍历_快速方法

前言 

大家好,今天我来讲一下二叉树的前中后序遍历

我录了一个视频,发布在Bilibili,大家可以去看一下支持一下哈,里面有动画演示。本文仅为视频的核心内容概括。

这里,需要者自看,可能会比看文章的文字更清晰一些

正文

召唤一棵美丽的二叉树

好了就是这棵啦

前序

前序遍历,不就是根左右(先根,再是左子树,再是右子树)吗

如果我们将左右子树看成两棵待定的树,可以用括号套起来,即:

当前结点()()

那么,我们只需要在()里再继续以这样的方式嵌套(叶子结点考虑不加后面的括号)即可求出一个序列,对于我们上面那棵美丽的二叉树而言,过程按照一层一层大概是这样的:

A()()

A(B()())(C()())

A(B(D)(E))(C(F()())())

A(B(D)(E))(C(F()(G))())

那么,我们再将括号去掉,就可以啦,即

ABDECFG

中序

中序遍历,不就是左根右吗

这次我们改一下顺序,即()当前结点()

只需要在()里再继续以这样的方式嵌套即可求出,以上树举例:

()A()

(()B())A(()C())

((D)B(E))A((()F())C())

((D)B(E))A((()F(G))C())

那么,我们再将括号去掉,即

DBEAFGC

后序

左右根,()()当前结点

以上树举例:

()()A

(()()B)(()()C)A

((D)(E)B)((()(G)F)()C)A

((D)(E)B)((()(G)F)()C)A

DEBGFCA

结语

可以自己造几棵二叉树,多多练习一下

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值