/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode
buildTree(
int[] inorder,
int[] postorder) {
return buildTree(inorder,
0,inorder.length -
1,postorder,
0,postorder.length -
1);
}
public TreeNode
buildTree(
int[] inorder,
int inBegin,
int inEnd,
int[] postorder,
int postBegin,
int postEnd) {
if(inBegin > inEnd) {
return null;
}
int val = postorder[postEnd];
TreeNode root =
new TreeNode(val);
int leftLen =
0,
i = inBegin;
for(;i < inEnd;i++) {
if(val == inorder[i]) {
break;
}
leftLen++;
}
root.left = buildTree(inorder,inBegin,inBegin + leftLen -
1,postorder,postBegin,postBegin + leftLen -
1);
root.right = buildTree(inorder,inBegin + leftLen +
1,inEnd,postorder,postBegin + leftLen,postEnd -
1);
return root;
}
}
转载请注明原文地址: https://ju.6miu.com/read-1303668.html