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
5000nodes. - 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.uj5u.com/qita/651.html
標籤:其他
上一篇:E. Xenia and Tree 決議(思維、重心剖分)
下一篇:歸并排序的Rust實作
