很明显,已知一棵二叉树的前序遍历和后序遍历,判断中序遍历时,其可能性只与没有兄弟节点的叶节点的位置有关。
假设没有兄弟节点的叶节点共有n个,则可能性边有2^n个。(就不证明了)
那么,如何计算n的值呢?
下面有一个性质:
- 一棵二叉树的前序遍历a1a2a3...ai和后序遍历b1b2b3...bi有一种关系:
- 没有兄弟节点的叶节点的根 在a序列下标为i, 在b序列下标为j
则有 a[i-1] == b[j+1]
这是因为当根只有一棵子树时,前序和后序遍历都是先遍历它的孩子,而且是唯一的一个孩子,所以相对位置是一样的。 - 具体的题目见codevs1029