1305. 两棵二叉搜索树中的所有元素(2022-5-1)
给你 root1
和 root2
这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.
示例请移步官网查看
提示:
- 每棵树的节点数在
[0, 5000]
范围内 -10^5 <= Node.val <= 10^5
解题思路
中序遍历把「搜索树」转化为线性数组,然后再把两个数组进行归并排序,因为都是有序的,所以归并更快
var getAllElements = function(root1, root2) {
// 中序遍历
const midOrder = (node,arr) => {
if(node == null) return
midOrder(node.left,arr)
arr.push(node.val)
midOrder(node.right,arr)
}
const ret = [], arr1 =new Array(), arr2 = new Array()
midOrder(root1,arr1)
midOrder(root2,arr2)
// 归并
let i = j = 0
while(i < arr1.length && j < arr2.length){
if(arr1[i] <= arr2[j]) ret.push(arr1[i++])
else ret.push(arr2[j++])
}
while(i < arr1.length){
ret.push(arr1[i++])
}
while(j < arr2.length){
ret.push(arr2[j++])
}
return ret
};