题目
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:3/ \9 20/ \15 7
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
解题记录
- 因为没有重复序列,鉴于中序遍历父节点的位置正好将左右两树分开,通过map记录下中序遍历中节点值和index的映射关系
- 后续遍历从后向前的顺序是,父->右->左
- 通过后续遍历逆向或取节点,最后一个一定是根节点,通过map获取到根节点的位置,通过根节点位置分割,根节点左边就是左树,根节点右边就是右树
- 以此递归下去获取全树
/*** @author: ffzs* @Date: 2020/9/25 上午7:23*/class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public