-
两个二叉搜索树都采用中序遍历,就可以把他们都转换为有序数组
-
将两个有序数组合并为一个有序数组
-
使用while循环,如果这两个数组至少有一个数组存在值,则会将值取出,然后进一步判断 1.
nums1.length && nums2.length有意义,则都取出一个元素做比对,谁小就出列它插入res中2.
nums1有意义则直接从nums1取出一项,插入res3
nums2有意义则直接从nums2取出一项,插入res
const getAllElements = (root1, root2) => {
const nums1 = getNums(root1);
const nums2 = getNums(root2);
const res = [];
while (nums1.length || nums2.length) {
if (nums1.length && nums2.length) {
res.push(nums1[0] < nums2[0] ? nums1.shift() : nums2.shift());
} else if (nums1.length) {
res.push(nums1.shift());
} else {
res.push(nums2.shift());
}
}
return res;
};
// 中序遍历
const getNums = root => {
const res = [];
const inOrder = root => {
if (!root) return;
inOrder(root.left);
res.push(root.val);
inOrder(root.right);
};
inOrder(root);
return res;
};