Skip to content

题目

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

示例2:

输入: root = [1,2,3]
输出: [1,3]
输入: root = [1,2,3]
输出: [1,3]

提示:

  • 二叉树的节点个数的范围是 [0,104]
  • -231 <= Node.val <= 231 - 1

理解题目

找到二叉树中,每行最大的值,收集起来。

题解

利用BFS去遍历每一次层,将每一层最大的值收集起来即可

答案

ts
function largestValues(root: TreeNode | null): number[] {
    const ans = new Array<number>()
    if (root != null) {
        let queue = [root]
        while (queue.length > 0) {
            const nxt = new Array<TreeNode>()
            let cur = queue[0].val
            for (const node of queue) {
                cur = Math.max(cur, node.val)
                if (node.left != null) {
                    nxt.push(node.left)
                }
                if (node.right != null) {
                    nxt.push(node.right)
                }
            }
            queue = nxt
            ans.push(cur)
        }
    }
    return ans
};
function largestValues(root: TreeNode | null): number[] {
    const ans = new Array<number>()
    if (root != null) {
        let queue = [root]
        while (queue.length > 0) {
            const nxt = new Array<TreeNode>()
            let cur = queue[0].val
            for (const node of queue) {
                cur = Math.max(cur, node.val)
                if (node.left != null) {
                    nxt.push(node.left)
                }
                if (node.right != null) {
                    nxt.push(node.right)
                }
            }
            queue = nxt
            ans.push(cur)
        }
    }
    return ans
};