当前位置: 首页 > article >正文

力扣 LeetCode 513. 找树左下角的值(Day8:二叉树)

解题思路:

方法一:递归法(方法二更好理解,个人更习惯方法二)

前中后序均可,实际上没有中的处理

中左右,左中右,左右中,实际上都是左在前,所以遇到的第一个节点就是最左节点

可以改为简化逻辑:

recur ( root , depth + 1 )

传入的depth+1,实际上并没有改变depth的值

class Solution {
    int maxDepth = Integer.MIN_VALUE;
    int res;

    public int findBottomLeftValue(TreeNode root) {
        int depth = 0;
        recur(root, depth);
        return res;
    }

    public void recur(TreeNode root, int depth) {
        if (root == null) return;
        if (root.left == null && root.right == null) {
            if (depth > maxDepth) {
                maxDepth = depth;
                res = root.val;
            }
        }
        if (root.left != null) {
            depth++;
            recur(root.left, depth);
            depth--;
        }
        if (root.right != null) {
            depth++;
            recur(root.right, depth);
            depth--;
        }
    }
}

方法二:迭代法

层序遍历

class Solution {
    public int findBottomLeftValue(TreeNode root) {
        Queue<TreeNode> queue = new ArrayDeque<>();
        queue.add(root);
        int res = 0;
        while (!queue.isEmpty()) {
            int size = queue.size();

            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                if (i == 0) res = node.val;

                if (node.left != null) queue.add(node.left);
                if (node.right != null) queue.add(node.right);
            }

        }
        return res;
    }
}


http://www.kler.cn/a/405143.html

相关文章:

  • Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码
  • 算法.图论-习题全集(Updating)
  • 【腾讯云产品最佳实践】腾讯云CVM入门技术与实践:通过腾讯云快速构建云上应用
  • 「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
  • debian 如何进入root
  • 【c++丨STL】stack和queue的使用及模拟实现
  • [服务器] 腾讯云服务器免费体验,成功部署网站
  • PBDL (基于物理的深度学习)-Chapter 1
  • 深度学习day2-Tensor 2
  • 【Git】git从暂存区中移除文件
  • 山泽HDMI切换器:提升家庭娱乐与办公体验的利器
  • 支持向量机SVM——基于分类问题的监督学习算法
  • HBase 原理
  • 蓝桥杯每日真题 - 第19天
  • 第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞
  • 生产环境centos8 Red Hat8部署ansible and 一键部署mysql两主两从ansible脚本预告
  • 经验笔记:远端仓库和本地仓库之间的连接(以Gitee为例)
  • 在Sui 区块链上创建、部署和管理 NFT 的完整教程
  • java 设计模式 模板方法模式
  • shell脚本-笔记25
  • leetcode105:从前序与中序遍历构建二叉树
  • Java API 学习指南:从入门到精通的全面指导
  • 2.13 转换矩阵
  • 【数据库知识】mysql进阶-Mysql数据库的主从复制
  • Spring Boot核心概念:日志管理
  • SAP FICO 资产会计AA后台配置 (上)