由前序及中序遍历构建唯一二叉树
由二叉树的前序及中序遍历确实能构建唯一的二叉树,但是我们注意到:
假如前序遍历为:6162,中序遍历为:1662,会有两种情况。
这是因为前序遍历及中序遍历序列用的是结点的具体值而不是序号,结点的序号是唯一的,不会在遍历序列中出现相同值,所以构建的二叉树也是唯一的。而使用结点具体值来代表结点,若两个或多个结点的具体值相同则无法通过遍历序列来确认谁是谁,从而造成构建的树不唯一。所以,关键点在于要用树结点序号来标识遍历序列,遇到用结点具体值来标识遍历序列且结点值没有两两不同,则构建树不唯一,本质是没有确立结点值与结点的一一对应,以后遇到类似的问题需要注意。