我们都知道我们可以通过两种方法对二叉树进行遍历:深度优先遍历和广度优先遍历。在深度优先遍历中通过父节点所在的位置又可以分为前序遍历、中序遍历和后序遍历。
既然二叉树可以生成三种序列,同样我们也可以根据序列生成二叉树。
中序和后序生成二叉树
给你二叉数的中序和后序如下:
中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12
后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1
我们知道中序和后序的区分在于父节点的位置不同,由此中序数组的中间节点和后序数组的最后节点1就是二叉树的根节点。
又由中序的性质:左子树都在根节点的左侧,右子树都在根节点的右侧。可推断如下图:
此时左子树和右子树,左子树的中序数列为:3 4 8 6 7 5 2
,后序数列为:8 7 6 5 4 3 2
同样进行上述判断,此时的根节点为2,且3 4 8 6 7 5都在2的左边,右边没有值:
后序操作以此类推……最终得到二叉树