力扣 二叉树的直径(dfs)

题目链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/

题目的意思是求二叉树的直径,就是从任意节点出发,到任意节点结束,最长的那一条路径,也就是这条路上经过节点的数量减去1就是最长直径

需要明确的是,其最长直径不一定非得要经过根节点,所以我们应该以每个节点当做根节点,保存其路径最大值

同时,以该节点为根节点的最大路径即为max(左子树最大长度,右子树最大长度)+1

以该节点为根节点的长度为左子树长度+右子树长度

流程:

  • 每个点为中心的直径就是这个点左右子树的深度之和;
  • res保存最大直径,最大直径即为每次访问某个结点时获得的以该节点为中心的直径;
  • 返回值为以该节点为根的子树的深度;
var ans int
func dfs(root *TreeNode) int{if root==nil{return 0}x1:=dfs(root.Left)x2:=dfs(root.Right)result:=x1+x2 // 左子树长度+右子树长度 就等于以该节点为根节点的最大长度// 保存最大长度if result>ans{ans=result}if x1>x2{ // 以该节点为根节点的最大路径即为max(左子树最大长度,右子树最大长度)+1return x1+1}return x2+1
}
func diameterOfBinaryTree(root *TreeNode) int {ans=0dfs(root)return ans
}

力扣 二叉树直径(dfs)相关推荐

  1. [力扣] 二叉树的层序遍历

    [力扣] 二叉树的层序遍历 广度优先算法,遍历每一层的节点 例题: 102. 二叉树的层序遍历 # Definition for a binary tree node. # class TreeNod ...

  2. 【xsong说算法】第三期:手撕力扣二叉树

    3.1 前言   看了很多别人总结的算法的笔记,他们都比较推荐在我们对算法无从下手的时候,去刷二叉树的题,因为二叉树类型的题能够培养我们的框架思维,为我们接下来刷动态规划类型打一个很好的基础.首先声明 ...

  3. 力扣-二叉树的层序遍历

    给一个二叉树,请返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). 参考代码(利用队列实现): class Solution {public List<List<In ...

  4. 力扣-二叉树的前序遍历

    给一个二叉树的根节点 root ,返回它节点值的 前序遍历. 例如: 输入:root = [1,null,2,3] 输出:[1,2,3] 输入:root = [] 输出:[] 参考代码: /*** D ...

  5. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  6. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  7. 《LeetCode力扣练习》第617题 合并二叉树 Java

    <LeetCode力扣练习>第617题 合并二叉树 Java 一.资源 题目: 给你两棵二叉树: root1 和 root2 . 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些 ...

  8. 《LeetCode力扣练习》第226题 翻转二叉树 Java

    <LeetCode力扣练习>第226题 翻转二叉树 Java 一.资源 题目: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点. 示例 1: 输入:root = [4, ...

  9. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java

    <LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...

最新文章

  1. 设置div中的div居中显示
  2. linux上修改ssh密码和mysql密码
  3. oracle单表数据量上亿_MySQL数据库中,数据量越来越大,有什么具体的优化方案么?...
  4. .sql文件_面试题:mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?
  5. Maven精选系列--依赖范围、传递、排除
  6. 诗与远方:无题(九十二)
  7. Ubuntu on WSL 2 GA
  8. mysql client 升级_升级MySQL (参考MySQL官方文档)
  9. SSA ERP LN v6.1
  10. java pdf打印_Java 打印PDF文档的3种方法
  11. 简单几步:教你利用NAS设备存储云盒子企业网盘的所有数据
  12. 《吴忠与富富平》之一:秦统一前后的吴忠及秦汉对吴忠地区的开发
  13. PHP - 收藏集 - 掘金
  14. 视觉十四讲 第三讲 深蓝学院习题分析
  15. 音频左右声道数据合并到一个声道
  16. 大一新生必看,自学必看,里昂详解数据结构之线性表
  17. 51单片机-LCD12864液晶屏
  18. java1.8 xp_最新版Java8怎么在XP系统电脑上安装?
  19. OpenCV — 人脸识别
  20. java vip 设计,图灵Java架构师vip

热门文章

  1. 管理经济学计算机会成本,管理经济学:企业决策的目标
  2. js websocket自动重连机制(心跳后续)
  3. Git远程分支覆盖本地分支的详细介绍
  4. 装饰模式Decorator
  5. 软件设计师角色指南-【3】日常工作
  6. 锚框(anchor box)/先验框(prior bounding box)概念介绍及其生成
  7. go是面向对象语言吗?
  8. Android学习笔记——广播机制
  9. 头歌--Java入门 - Java初体验
  10. jQuery Mobile的安装