Advertisement
unknown_0711

Untitled

Jul 11th, 2022
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. /**
  2. * Definition for binary tree
  3. * class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11.  
  12. ArrayList<Integer> preorder, inorder;
  13.  
  14. public TreeNode buildTree(ArrayList<Integer> preorder, ArrayList<Integer> inorder) {
  15.  
  16. if (preorder == null || inorder == null || preorder.size() == 0 || inorder.size() == 0)
  17. return null;
  18.  
  19. if (preorder.size() != inorder.size())
  20. return null;
  21.  
  22. this.preorder = preorder;
  23. this.inorder = inorder;
  24.  
  25. return rec(0, preorder.size() - 1, 0);
  26.  
  27. }
  28.  
  29.  
  30. private TreeNode rec(int start, int end, int index) {
  31.  
  32. if (start > end)
  33. return null;
  34.  
  35. TreeNode root = new TreeNode(preorder.get(index));
  36.  
  37. int i = start;
  38.  
  39. for (; i <= end; i++) {
  40. if (inorder.get(i).intValue() == root.val)
  41. break;
  42. }
  43.  
  44. root.left = rec(start, i - 1, index + 1);
  45. root.right = rec(i + 1, end, index + i - start + 1);
  46.  
  47. return root;
  48. }
  49.  
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement