已知某二叉树具有n(n>0)个不同的节点,其中序序列是a0a1...an-1,后序序列是b0b1...bn-1。
因为在后序遍历过程中,先遍历左子树,再遍历右子树,最后访问根节点。所以,bn-1必定是二叉树的根节点,而且bn-1也必定在中序序列中出现。也就是说在中序序列中有某个ak(0<=k<=n-1)就是根节点。
由于ak是根节点,而且中序遍历过程中,先遍历左子树,再访问根节点,最后遍历右子树,所以在中序序列中,a0a1...ak-1必定是根节点ak左子树的中序序列,即ak的左子树有k个节点。而ak+1...an-1比是根节点ak的右子树的中序序列,即ak的右子树有n-k-1个节点。
另外在后序序列中,在根节点bn-1之前的n-k-1个节点bk...bn-2就是右子树的后序序列,b0...bk-1是左子树的后序序列。
前面所述,也可作为证明 “任何n(n>0)个不同节点的二叉树,都可以由它的中序序列和后序序列唯一地确定” 的方法。
/* * post 存放后序序