【每日一题】1305. 两棵二叉搜索树中的所有元素

【每日一题】1305. 两棵二叉搜索树中的所有元素

我的图图呢 526 2022-05-01

题目

给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。

示例 1:
image
输入: root1 = [2,1,4], root2 = [1,0,3]
输出: [0,1,1,2,3,4]

示例 2:
image-1651387589202
输入: root1 = [1,null,8], root2 = [8,1]
输出: [1,1,8,8]

提示:

  • 每棵树的节点数在 [0, 5000] 范围内
  • -10e5 <= Node.val <= 10e5

题解

  • 中序遍历+排序,一开始还想了一下怎么两个一起排,想不出

代码

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function inorderTraversal(root:TreeNode | null,arr:number[]):void{
    if(root===null){
        return;
    }
    inorderTraversal(root.left,arr);
    arr.push(root.val);
    inorderTraversal(root.right,arr);
}

function getAllElements(root1: TreeNode | null, root2: TreeNode | null): number[] {

    const arr1 =[];
    inorderTraversal(root1,arr1);
    const arr2 = [];
    inorderTraversal(root2,arr2);
    return  [...arr1,...arr2].sort((a,b)=>a-b);
};

# leetcode