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

LeetCode:513.找二叉树左下角的

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

LeetCode:513.找二叉树左下角的
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
在这里插入图片描述
输入: root = [2,1,3]
输出: 1
示例 2:
在这里插入图片描述
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

本体使用层序遍历感觉会更简单,但是下面使用的是递归遍历,用到了回溯;这里面使用前/中/后序都可以,因为这里不涉及中间节点的处理逻辑,需要找到的是叶子节点的值

	// 深度的最大值
    int maxDepth = Integer.MIN_VALUE;
    // 结果
    int result;

    public int findBottomLeftValue(TreeNode root) {
        traversal(root, 0);
        return result;
    }

    private void traversal(TreeNode cur, int depth) {
        if (cur.left == null && cur.right == null) {
            if (depth > maxDepth) {
                // 只有找到更大深度的时候采取收集结果
                maxDepth = depth;
                result = cur.val;
            }
        }
        // 左
        if (cur.left != null) {
            // 回溯 也可以直接写成traversal(cur.left, depth++);
            depth++;
            traversal(cur.left, depth);
            depth--;
        }
        // 右
        if (cur.right != null) {
            depth++;
            traversal(cur.right, depth);
            depth--;
        }
    }

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

相关文章:

  • 使用 OpenAI 进行结构化标签提取的 Python 实现
  • flutter在windows平台中运行报错
  • 在Mac电脑上搭建Gradle
  • 关于 webservice 日志中 源IP是node IP的问题,是否能解决换成 真实的客户端IP呢
  • Prism模块化
  • C++并发:并发操作的同步
  • 日志聚类算法 Drain 的实践与改良
  • SQL Sever 数据库损坏,只有.mdf文件,如何恢复?
  • 模块化通讯管理机在物联网系统中的应用
  • Apache Celeborn 在B站的生产实践
  • 微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域
  • 通俗易懂的讲一下Vue的双向绑定和React的单向绑定
  • 大模型训练底座-多集群管理
  • python28-IO编程、文件读写、os模块
  • [商业化] 【微软商店】如何申请ITIN、修改Manifest并处理Win32应用的FullTrust权限
  • 区块链安全常见的攻击分析——拒绝服务攻击 (Denial of Service-DOS)King合约【11】
  • ROS导航使用贝塞尔曲线对全局路径进行平滑处理
  • 一份完整的软件测试报告如何编写?
  • 拆解 Web3:探寻去中心化网络的核心密码
  • RK3588+麒麟国产系统+FPGA+AI在电力和轨道交通视觉与采集系统的应用
  • mysql连接时报错1130-Host ‘hostname‘ is not allowed to connect to this MySQL server
  • 积木(01)
  • @Transactional注解 细节!
  • 检索增强生成(RAG):大语言模型的创新应用
  • LeetCode 141:环形链表
  • C++面向对象编程:纯虚函数、抽象类、虚析构、纯虚析构