1305. All Elements in Two Binary Search Trees

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

猜你喜欢

转载自www.cnblogs.com/wentiliangkaihua/p/12201221.html