1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Solution { public List<Integer> getAllElements(TreeNode root1, TreeNode root2) { List<Integer> numList1 = new ArrayList<>(); dfs(numList1, root1); List<Integer> numList2 = new ArrayList<>(); dfs(numList2, root2);
List<Integer> numList = new ArrayList<>(numList1.size() + numList2.size()); int i = 0, j = 0; while (i < numList1.size() || j < numList2.size()) { int num1 = i < numList1.size() ? numList1.get(i) : Integer.MAX_VALUE, num2 = j < numList2.size() ? numList2.get(j) : Integer.MAX_VALUE; if (num1 <= num2) { numList.add(num1); i++; } else { numList.add(num2); j++; } }
return numList; }
private void dfs(List<Integer> numList, TreeNode root) { if (root == null) { return; }
dfs(numList, root.left); numList.add(root.val); dfs(numList, root.right); } }
|
References
1305. All Elements in Two Binary Search Trees