码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 解决所有二叉树路径问题


    Notice: 二叉树不存在回溯问题!

    非自顶向下问题

    LeetCode中的代表问题:
    124. 二叉树中的最大路径和
    687. 最长同值路径
    543. 二叉树的直径

    这类问题的特点是:从任意节点到任意节点的路径,不必须从上到下。如下图所示,有两个 4 位于同一层,不存在上下关系。


    该问题的模板是引入一个辅助函数 maxPath(node) 和一个全局变量 res。辅助函数的作用是求出以node节点为根结点的左侧最长路径和右侧最长路径,那么以该点为根结点的最长路径

    最长路径 = 左侧最长路径+右侧最长路径

    但值得注意的是,node向上层结点的返回值为左侧最长路径和右侧最长路径中较大的那个值。
    因为左右两条路径只能选择一条(因为不能回头,只能二选一)。

    ret = Math.max( 左侧最长路径,右侧最长路径 )

    在主函数中只需从根结点开始DFS,遍历所有结点,操作每一个结点时,全局变量 res 进行更新,若左侧最长路径和右侧最长路径的和大于现在的 res 值,则更新res。

    代码模板(Java)

    int res = 0;
    int maxPath(TreeNode node) //以node为路径起始点的最长路径
    {
        if (node == null) return 0;
        int left = maxPath(node.left);  // 左侧路径长度
        int right= maxPath(node.right); // 右侧路径长度
        /**
    	  根据不同题目条件
    	  计算left和right的值
    	**/
        res = max(res, left + right); //更新全局变量  
        return max(left, right);   //返回左右路径较长者
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    回溯算法:排列树(全排列)
    这个编辑器即将开源!
    logging日志的使用
    在线问题反馈模块实战(十九):实现数据批量导出到excel文件中功能
    <C++>手撕搜索二叉树
    工程(十二)Ubuntu20.04LSD_SLAM运行
    小程序中如何(批量)删除会员卡
    使用 Go 和 Excelize 构建电子表格
    【软件工程导论】软件工程导论笔记
    【C语言】结构体、共用体兄弟俩
  • 原文地址:https://blog.csdn.net/weixin_45651194/article/details/126666948
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号