中文题目
给定一个二叉树的 根节点 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逐层遍历
- 我们创建一个变量ret,用于记录每行的第一个val
- 然后创建队列queue,由于题目说明至少有一个节点,则root无脑入队,开始while循环
- 判断每行的第一个节点,将ret变量更新为首个节点的值
- 直到队列为空时,终止循环,返回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% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|