加载中...
剑指 Offer II 045-二叉树最底层最左边的值
发表于:2021-12-03 | 分类: 中等
字数统计: 648 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/LwUNpT

中文题目

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

 

示例 1:

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

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

 

提示:

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

 

注意:本题与主站 513 题相同: https://leetcode-cn.com/problems/find-bottom-left-tree-value/

通过代码

高赞题解

剑指OfferII045.二叉树最底层最左边的值

https://leetcode-cn.com/problems/LwUNpT/solution/shua-chuan-jian-zhi-offer-day21-dui-lie-do26g/

难度:中等

题目

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

提示:

  • 二叉树的节点个数的范围是 [1,10 ^ 4]
  • -2 ^ 31 <= Node.val <= 2 ^ 31 - 1

示例:

示例 1:
输入:
    2
   / \
  1   3

输出:
1

示例 2:
输入:
        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

输出:
7

分析

首先,最简单的应该是BFS逐层遍历

  1. 我们创建一个变量ret,用于记录每行的第一个val
  2. 然后创建队列queue,由于题目说明至少有一个节点,则root无脑入队,开始while循环
  3. 判断每行的第一个节点,将ret变量更新为首个节点的值
  4. 直到队列为空时,终止循环,返回ret即可。

解题

[]
class Solution: def findBottomLeftValue(self, root): queue = deque([root]) ret = root.val while queue: for i in range(len(queue)): q = queue.popleft() if i == 0: ret = q.val if q.left: queue.append(q.left) if q.right: queue.append(q.right) return ret
[]
class Solution { public int findBottomLeftValue(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); int ret = root.val; while (!queue.isEmpty()) { int lg = queue.size(); for (int i = 0; i < lg; i++) { TreeNode q = queue.poll(); if (i == 0){ ret = q.val; } if (q.left != null) { queue.add(q.left); } if (q.right != null) { queue.add(q.right); } } } return ret; } }

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

有喜欢力扣刷题的小伙伴可以加我微信(King_Uranus)互相鼓励,共同进步,一起玩转超级码力!

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

统计信息

通过次数 提交次数 AC比率
4671 5795 80.6%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
剑指 Offer II 044-二叉树每层的最大值
下一篇:
剑指 Offer II 046-二叉树的右侧视图
本文目录
本文目录