通过前序遍历和中序遍历结果重构二叉树
重建二叉树
http://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6
前序,中序,后序,都是指二叉树中,什么时候遍历根节点,左右孩子都是先左后右遍历。
解题的突破口有下面两点
1.前序遍历的结果中,根节点肯定是在左右孩子之前的;
2.中序遍历的结果中,根节点的左边部分肯定是左子树的,右边部分是右子树的。
根据这两点我们可以知道,前序遍历的第一个节点就是根节点。然后再中序遍历中找到这个节点的位置,然后左边的则是左子树,右边的就是右子树。
将左右子树用递归的形式进行构建。
值得注意的是,找子树的根节点,可以直接比较每一个节点在前序遍历中的位置,位置最靠前的则是子树的根节点。