Given two binary search trees root1
and root2
.
Return a list containing all the integers from both trees sorted in ascending order.
Example 1:
Input: root1 = [2,1,4], root2 = [1,0,3] Output: [0,1,1,2,3,4]
Example 2:
Input: root1 = [0,-10,10], root2 = [5,1,7,0,2] Output: [-10,0,0,1,2,5,7,10]
Example 3:
Input: root1 = [], root2 = [5,1,7,0,2] Output: [0,1,2,5,7]
Example 4:
Input: root1 = [0,-10,10], root2 = [] Output: [-10,0,10]
Example 5:
Input: root1 = [1,null,8], root2 = [8,1] Output: [1,1,8,8]
Constraints:
- Each tree has at most
5000
nodes. - Each node's value is between
[-10^5, 10^5]
.
思维定势了。。我想按merge two sorted array那样做,有点点多余,还是看rock大神的,
class Solution { public List<Integer> getAllElements(TreeNode root1, TreeNode root2) { List<Integer> ans = new ArrayList<>(); inorder(root1, ans); inorder(root2, ans); Collections.sort(ans); // Here it calls List.sort(object) method. return ans; } private void inorder(TreeNode n, List<Integer> ans) { if (n == null) return; inorder(n.left, ans); ans.add(n.val); inorder(n.right, ans); } }
根据ans.add()来整inorder,postorder和preorder