/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode buildTree(int[] inorder, int[] postorder) {
if (inorder.length==0) return null;
return traversal(inorder, postorder, 0, inorder.length-1, postorder.length-1);
}
public TreeNode traversal(int[] inorder, int[] postorder, int ist, int iend, int pst) {
if (ist>iend) return null;
TreeNode res = new TreeNode(postorder[pst]);
int mid = 0;
for (int i=ist; i<=iend; i++) {
if (inorder[i]==res.val) {
mid = i;
break;
}
}
res.left = traversal(inorder, postorder, ist, mid-1, pst-1-iend+mid);
res.right = traversal(inorder, postorder, mid+1, iend, pst-1);
return res;
}
}
没有评论:
发表评论