排序&遍历二叉树-1305. 两棵二叉搜索树中的所有元素

36 阅读1分钟

1305. 两棵二叉搜索树中的所有元素

示例 1:

输入: 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]

 

提示:

  • 每棵树的节点数在 [0, 5000] 范围内
  • -105 <= Node.val <= 105
/**
 * @param {TreeNode} root1
 * @param {TreeNode} root2
 * @return {number[]}
 */
var getAllElements = function(root1, root2) {
	const arr1 = [];
	const arr2 = [];
	inOrder(root1, arr1);
	inOrder(root2, arr2);
	const arr = [];
	while (arr1.length &&  arr2.length) {
		if (arr1[0] < arr2[0]) {
			arr.push(arr1[0]);
			arr1.shift();
		} else {
			arr.push(arr2[0]);
			arr2.shift();
		}
	}

	if(arr1.length) {
		arr.push(...arr1);
	}
	if(arr2.length) {
		arr.push(...arr2);
	}
	return arr;
};

function inOrder(root, arr) {
	if (!root) {
		return;
	}
	if (root.left) {
		inOrder(root.left, arr);
	}

	arr.push(root.val);
	
	if (root.right) {
		inOrder(root.right, arr);
	}

}