栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode-513找树左下角的值-中等

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-513找树左下角的值-中等

标题:513找树左下角的值-中等 题目

给定一个二叉树的 根节点 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 代码Java

// 1. 层序遍历 返回 最左叶子节点
public int findBottomLeftValue1(TreeNode root) {
    int ans = 0;
    if (root == null) return ans;
    Deque deque = new linkedList<>();
    deque.add(root);
    while (!deque.isEmpty()) {
        int size = deque.size();
        ans = deque.peekFirst().val;
        for (int i = 0; i < size; i++) {
            TreeNode node = deque.pollFirst();
            if (node.left != null) deque.add(node.left);
            if (node.right != null) deque.add(node.right);
        }
    }
    return ans;
}

// 2. 递归   前序遍历+最大深度
private int Deep = -1;
private int ans = 0;

public int findBottomLeftValue(TreeNode root) {
    ans = root.val;
    find(root, 0);
    return ans;
}

public void find(TreeNode root, int deep) {
    if (root == null) return;
    if (root.left == null && root.right == null) {
        if (deep > Deep) {
            ans = root.val;
            Deep = deep;
        }
    }
    if (root.left != null) find(root.left, deep + 1);
    if (root.right != null) find(root.right, deep + 1);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号