找树左下角的值· 6 月更文挑战

65 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

一、题目描述:

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

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

示例 1:

img

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

img

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

提示:

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

来源:力扣(LeetCode) 链接:leetcode.cn/problems/fi… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析:

很明显通过层序遍历找到最后一层然后返回第一个值即可,那么问题也就拆分为两个

如何找到最后一层 使用一个队列,每一次循环队列中所有的子节点加入到队列中,然后将循环队列中的子节点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);
        }
    }
}

四、总结:

image.png

掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐

希望对你有帮助,期待您找到心意的工作和满意的offer

期待下次再见~

🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 ~关注Jam,从你我做起! \