遍历序列与二叉树的复原

1.利用前序序列和中序序列恢复二叉树

二叉树的前序遍历是先访问根结点,再按前序遍历方式遍历根结点的左子树和右子树,即由前序序列可以确定二叉树的根结点。另一方面,中序遍历是先中序遍历左子树,然后访问根结点,最后中序遍历右子树;根结点在中序序列中必然将结点分割成为两个子序列,根结点前的子序列是其左子树的中序序列,根结点后的子序列是其右子树的中序序列。现在可以根据这两个子序列在前序序列中找到对应的左子序列和右子序列,两个子序列在前序中的第一个结点分别是根结点的左孩子结点和右孩子结点,即左子树和右子树的根结点;此时左右子树的根结点又分别把左右子序列各划分成两个子序列。如此一直做下去,由前序序列确定各级子树的根结点,由中序序列确定隶属于各级子树的左右子树的结点,当取尽前序序列中的所有结点时,各级子树的左右孩子都唯一确定了,二叉树也就恢复了;而且这种恢复是唯一的。

2.利用后序序列和中序序列恢复二叉树

利用后序序列和中序序列也可以唯一确定一棵二叉树。在恢复二叉树的过程中,后序序列的作用如同前面的前序序列一样是确定各级子树的根结点;无非是前序序列中第一个结点是根结点而后序序列中最后一个结点为根结点。中序序列的作用仍然是确定隶属于各级子树的左右子树中的结点,当各级子树中的左右孩子都唯一确定时,二叉树就恢复了。

3.利用层次序列和中序序列恢复二叉树

利用层次序列和中序序列也可以唯一确定(或恢复)一棵二叉树。层次遍历是从上到下处于不同层次的各级子树根结点的前后顺序序列,在同层中是从左到右依次顺序排列的。先由层次序列知其第一个结点为二叉树的根结点,由中序序列区分隶属于左右子树的结点序列;这样的过程一直进行下去直到其每一级子树的孩子结点都唯一确定,二叉树就恢复了。

在上面讨论的二叉树的恢复过程中,中序序列所起的作用是很重要的,只有利用中序序列才能区分各级子树中隶属于左右子树的各结点,而前序序列、后序序列或层次序列的作用仅在于确定左右子树的根结点。所以利用前序、后序和层次序列的作用仅在于确定各级子树的根结点。所以利用前序、后序还是层次序列中的任何两种序列或三种序列全用都不能唯一确定(或恢复)一棵二叉树,这是因为只知根结点而无法区分左右子树之缘故

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值