给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例 1:输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输出:[3,9,20,null,null,15,7]

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { Map<Integer,Integer> myMap = new HashMap(); public TreeNode buildTree(int[] inorder, int[] postorder) { for(int i=0; i < inorder.length; i++) myMap.put(inorder[i],i); return backTracking(inorder,postorder, 0, postorder.length, 0, inorder.length); } public TreeNode backTracking(int[] inorder, int[] postorder, int pStart, int pEnd, int iStart, int iEnd){ if(pStart == pEnd) return null; int rootVal = postorder[pEnd-1]; TreeNode root = new TreeNode(rootVal); int inorderIdx = myMap.get(rootVal); int leftNum = inorderIdx - iStart; root.left = backTracking(inorder, postorder, pStart, pStart+leftNum, iStart, inorderIdx); root.right = backTracking(inorder, postorder, pStart+leftNum, pEnd-1, inorderIdx+1, iEnd); return root; }}