一、题目描述:
给定一个二叉树的 根节点 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-bottom-left-tree-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路分析:
很明显通过层序遍历找到最后一层然后返回第一个值即可,那么问题也就拆分为两个
如何找到最后一层
使用一个队列,每一次循环队列中所有的子节点加入到队列中,然后将循环队列中的子节点pop掉,最后一次循环也就是没有子节点加入的一次循环即为最后一层
如何记录每层最左边的值
使用一个全局变量,每次循环时先把第一个队列元素拿出来做记录,其他的不做处理,这样子每次记录的就是这一层的最左边的元素,然后循环跑完记录的也就是最后一层的元素
三、AC 代码:
class Solution {
int h = 0, val = 0;
public int findBottomLeftValue(TreeNode root) {
dfs(root, 1);
return val;
}
public void dfs(TreeNode root, int height) {
if (root != null) {
if (height > h) {
h = height;
val = root.val;
}
dfs(root.left, height + 1);
dfs(root.right, height + 1);
}
}
}
四、总结:
掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐
希望对你有帮助,期待您找到心意的工作和满意的offer
期待下次再见~
🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 ~关注从你我做起! \