515. 在每个树行中找最大值(中)

题目

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

python

题解:BFS

  • BFS遍历每一层,在每一层每一个元素出队的时候更新最大值,保存每一层的最大值,最后返回即可。
class Solution:
    def largestValues(self, root: Optional[TreeNode]) -> List[int]:
        if not root:# 如果根节点为空,返回空列表
            return []
        q=[root]#用列表做队列
        res=[] # 存储每层的最大值
        while q:
            size=len(q)
            max_val=float('-inf')# 当前层的最大值初始化为负无穷小
            for _ in range (size):
                cur=q.pop(0)# 从队列中取出当前节点
                max_val=max(max_val,cur.val)# 更新当前层的最大值
                if cur.left:
                    q.append(cur.left)# 将左子节点添加到队列中
                if cur.right:
                    q.append(cur.right) # 将右子节点添加到队列中
            res.append(max_val) # 将当前层的最大值添加到结果列表中
        return res # 返回每层的最大值列表

javascript

题解:层序遍历

var largestValues = function(root) {
    if(root===null) return []
    let res = []
    let queue = [root]
    while(queue.length>0){
        let n = queue.length
        let max=-Infinity
        for(let i=0;i<n;i++){
            let cur_node=queue.shift()
            //更新每一层的最大值
            if(cur_node.val>max) max = cur_node.val
            if(cur_node.left) queue.push(cur_node.left)
            if(cur_node.right) queue.push(cur_node.right)
        }
        res.push(max)
    }
    return res
};
posted @   Frommoon  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示