All Elements in Two Binary Search Trees (M)

题目

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].

题意

将两个BST中的值合并并排序。

思路

先用中序遍历取出每个BST中值得有序序列,再归并。


代码实现

Java

class Solution {
    public List<Integer> getAllElements(TreeNode root1, TreeNode root2) {
        List<Integer> ans = new ArrayList<>();
        List<Integer> list1 = new ArrayList<>(), list2 = new ArrayList<>();
        inorder(root1, list1);
        inorder(root2, list2);
        int i = 0, j = 0;
        while (i < list1.size() || j < list2.size()) {
            if (i == list1.size() || j < list2.size() && list1.get(i) >= list2.get(j)) {
                ans.add(list2.get(j++));
            } else {
                ans.add(list1.get(i++));
            }
        }
        return ans;
    }

    private void inorder(TreeNode root, List<Integer> list) {
        if (root == null) {
            return;
        }

        inorder(root.left, list);
        list.add(root.val);
        inorder(root.right, list);
    }
}
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/mapoos/p/13620814.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!