我们都熟悉二叉树的预订,有序和后序遍历。数据结构类中的一个常见问题是:
我想知道为什么并且有理由在理论上解释它?
更新1 一个答案:父母只有一个孩子的叶子会有问题,因为在这种情况下,这种叶子可以是左或右孩子。
答案 0 :(得分:0)
我不熟悉对此的理论解释,但我会尝试从逻辑上解释它。
让我们来看一个更普遍的问题: - 使用预订和后序遍历构建二叉树。
我们举一个例子。我们有以下树:
1
/ \
2 5
/ \ \
3 4 6
这棵树的预购顺序是(1,2,3,4,5,6),后期顺序是(3,4,2,6,5,1)。现在,我们希望重建同一棵树。
我们知道1是根节点。现在我们转到2.在帖子顺序中,因为2在1之前,所以它是1的孩子.3是下一个。由于3在2之前,它是2的孩子.4在2之前,因此它是孩子。 5是在2之后但是在1之前,所以它是1的孩子而不是2. 6同样是5的孩子。但是6岁左边的孩子还是右边的孩子?我们有两种可能性:
1 1
/ \ / \
2 5 2 5
/ \ \ / \ /
3 4 6 3 4 6
无法确定6是左边的还是右边的5个子节点。对于2个(和1个类似的)子节点,我们确定3个在4个之前的顺序遍历(左树,右边) -tree,root)但是在单个孩子的情况下,存在歧义。
因此,对于未完成的二叉树,一个不能明确地确定树,从而确定有序遍历(尽管可以,如果树是完成)。