Advertisement
sweet1cris

Untitled

Sep 25th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.04 KB | None | 0 0
  1. public class ReconstructBTInLevel {
  2.   public TreeNode reconstruct(int[] level, int[] in) {
  3.     // Assumptions: level, in are not null,
  4.     // there is no duplicate in the binary tree.
  5.     Map<Integer, Integer> inMap = new HashMap<Integer, Integer>();
  6.     for (int i = 0; i < in.length; i++) {
  7.       inMap.put(in[i], i);
  8.     }
  9.     List<Integer> lList = new ArrayList<Integer>();
  10.     for (int num : level) {
  11.       lList.add(num);
  12.     }
  13.     return helper(lList, inMap);
  14.   }
  15.  
  16.   private TreeNode helper(List<Integer> level, Map<Integer, Integer> inMap) {
  17.     if (level.isEmpty()) {
  18.       return null;
  19.     }
  20.     TreeNode root = new TreeNode(level.remove(0));
  21.     List<Integer> left = new ArrayList<>();
  22.     List<Integer> right = new ArrayList<>();
  23.     for (int num : level) {
  24.       if (inMap.get(num) < inMap.get(root.key)) {
  25.         left.add(num);
  26.       } else {
  27.         right.add(num);
  28.       }
  29.     }
  30.     root.left = helper(left, inMap);
  31.     root.right = helper(right, inMap);
  32.     return root;
  33.   }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement