Appearance
题目
给定一棵二叉树的根节点 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
};