前言
大家好,今天我来讲一下二叉树的前中后序遍历
我录了一个视频,发布在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
结语
可以自己造几棵二叉树,多多练习一下