Untitled
unknown
plain_text
a year ago
1.2 kB
4
Indexable
class Solution {
public TreeNode buildTree(Vector<Integer> inorder, Vector<Integer> postorder) {
if (inorder.size() != postorder.size()) {
return null;
}
Map<Integer, Integer> hm = new HashMap<>();
for (int i = 0; i < inorder.size(); i++) {
hm.put(inorder.get(i), i);
}
return buildTreePostIn(inorder, 0, inorder.size() - 1, postorder, 0,
postorder.size() - 1, hm);
}
public TreeNode buildTreePostIn(Vector<Integer> inorder, int is, int ie,
Vector<Integer> postorder, int ps, int pe, Map<Integer, Integer> hm) {
if (ps > pe || is > ie) {
return null;
}
TreeNode root = new TreeNode(postorder.get(pe));
int inRoot = hm.get(postorder.get(pe));
int numsLeft = inRoot - is;
root.left = buildTreePostIn(inorder, is, inRoot - 1, postorder,
ps, ps + numsLeft - 1, hm);
root.right = buildTreePostIn(inorder, inRoot + 1, ie, postorder,
ps + numsLeft, pe - 1, hm);
return root;
}
}Editor is loading...
Leave a Comment