给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.
示例 1:
2 1
/ \ / \
1 4 0 3
输入:root1 = [2,1,4], root2 = [1,0,3]
输出:[0,1,1,2,3,4]
示例 2:
输入:root1 = [1,null,8], root2 = [8,1]
输出:[1,1,8,8]
解题思路
这一题我们可以把每棵树遍历放到数组中,然后将数组合并排序。因为题目提供的是二叉搜索树,我们可以通过中序遍历得到一个递增的数列。
代码
var getArr = function(arr, root) {
if (!root) return
getArr(arr, root.left)
arr.push(root.val)
getArr(arr, root.right)
}
var getAllElements = function(root1, root2) {
let arr1 = [], arr2 = []
getArr(arr1, root1)
getArr(arr2, root2)
let ans = []
let p1 = 0
for(let i = 0; i < arr2.length; i++) {
while(p1 < arr1.length && arr1[p1] <= arr2[i]) {
ans.push(arr1[p1++])
}
ans.push(arr2[i])
}
if (p1 < arr1.length) {
for (let i = p1; i < arr1.length; i++) {
ans.push(arr1[i])
}
}
return ans
};