Leetcode—二叉树行最大值

本文介绍了如何解决LeetCode上的二叉树行最大值问题,通过广度优先遍历策略,逐层查找每行的最大值。利用队列进行层次遍历,并在队列中插入特殊标记来区分不同行,从而找到每行的最大元素。
摘要由CSDN通过智能技术生成

二叉树行最大值

【题目描述】

您需要在二叉树的每一行中找到最大的值。

样例输入:

    1
   / \
  3   2
 / \   \
5   3   9

输出: [1, 3, 9] (题解)

【解题思路】

1: 广度优先遍历:即层次遍历, 借用队列先进先出特点, 将二叉树根节点存入队列中, 若队列非空 则重复

  • 队头元素出队并访问该元素

  • 若该节点的左孩子非空, 则将该节点的左孩子节点指针入队

  • 若该节点的右孩子非空, 则将该节点的右孩子节点指针入队

    而求每行最大值,存入队列时就将每行之间用特殊标记隔开,遍历输出时根据标记划分每行,每行假设第一个数

    为该行最大值max,若该行后面有输出值更大的,更改 max 值即可

【queue操作补充】
  定义一个queue变量:queue<Type> que
  查看该队列是否为空:que.empty() 为空则返回true,否则返回false
  将元素增加到队列尾:que.push(parameter)
  返回队列中拥有的元素个数:que.size()
  返回队列中队首元素:que.fr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值