为什么二叉树已知后根中根,其前根就唯一确定呢?

来源:百度知道 编辑:UC知道 时间:2024/06/01 22:40:37
而已知前、后,中根却有多个,为什么?能证明下吗?

设一棵树的根节点为r(root)
左子树节点集合为L(left),包含左子树的所有节点(无序)
右子树节点集合为R(right),包含右子树的所有节点(无序)
得到一棵树的中序遍历的结果必然是LrR
而前序遍历的结果为rLR
后续遍历的结果为LRr
这里可以理解吧
那么,当我们拿到前序遍历序列和中序遍历序列
可以首先根据前序遍历序列rLR确定其根节点r
然后根据r在中序遍历序列中的位置唯一确定出来
中序序列中在r左边的节点应该同属于左子树L
而在r右边的节点则构成了右子树R
由于二叉树是递归定义的
所以整棵树也就可以唯一的确定下来
因此它的后续遍历序列也就是唯一的
------------------------
如果拿到的是后续遍历和中序遍历的结果
过程其实和拿到前序遍历与中序遍历是一样的
通过后续遍历确定根节点
再通过中序遍历确定左右子树的组成
很显然其结果也是唯一的
------------------------------
而如果我们拿到的是前序遍历和后续遍历的序列
那么,我们能做的仅仅是确定出根节点r
由于两个序列的L和R都是连着的
无法唯一的确定器左右子树的节点集合
因此就会出现有多种情况的现象