LeetCode Algorithm 543. 二叉树的直径
543. 二叉树的直径
Ideas
这题貌似也在左神算法里见过。
基本思想就是递归,根节点从左子树获得一个想要的信息,从右子树获得一个想要的信息,然后对两个信息进行处理。
其实可以把直径分成两半看:从根节点到左子树的叶子结点的最长路径+根节点到右子树的叶子结点的最长路径-1。
然后就简单了,问题就转变成了求二叉树的深度。
Code
C++
class Solution {int ans = 1;int depth(TreeNode* rt) {if (rt == NULL) {return 0;}int l_depth = depth(rt->left);int r_depth = depth(rt->right);ans = max(ans, l_depth + r_depth + 1);return max(l_depth, r_depth) + 1;}
public:int diameterOfBinaryTree(TreeNode* root) {depth(root);return ans - 1;}
};
LeetCode Algorithm 543. 二叉树的直径相关推荐
- 【LeetCode】【HOT】543. 二叉树的直径(递归)
[LeetCode][HOT]543. 二叉树的直径 文章目录 [LeetCode][HOT]543. 二叉树的直径 package hot;class TreeNode{int val;TreeNo ...
- Java实现 LeetCode 543 二叉树的直径
543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 1/ \ 2 3 / \ 4 5 ...
- 543. 二叉树的直径 golang
文章目录 543. 二叉树的直径 example 正确解法 question 代码(wrong) 543. 二叉树的直径 概要: 借鉴了这个题的代码.可是有一个测试用例过不去 https://blog ...
- 543.二叉树的直径
543.二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 本题需要明确二叉树的直径计算方法: 二叉树的直 ...
- 543. 二叉树的直径
543. 二叉树的直径 描述 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ ...
- LeetCode 543. 二叉树的直径(DFS)
1. 题目 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树1/ \2 3/ \ 4 5 返回 3, 它的长 ...
- LeetCode 543二叉树的直径-简单
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1/ \2 3/ \ 4 5 返回 3, 它的 ...
- leetcode - 543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点. 示例 : 给定二叉树 解题思路:使用递归,注意递归和迭代的区别 class So ...
- 【LeetCode笔记】543. 二叉树的直径(Java、dfs、二叉树)
文章目录 题目描述 思路 & 代码 题目描述 思路 & 代码 由这个结论考虑:直径中一定有一个父结点,那么当前直径长度就是: 当前父结点的左子树深度 + 右子树深度 那么,只要遍历所有 ...
最新文章
- oracle中set怎么用,sqlplus命令格式以及sqlplus中set的用法与解释-Oracle
- java array arraylist_java 基础 array arraylist..越详细越好。
- storm从入门到放弃(一),storm介绍
- android studio安装在其他盘,Android Studio配置移动到D盘(亲测)
- DM9000 寄存器的定义
- java-number2
- 线下活动 × 深圳 | 大咖云集!第11届国际博士生论坛报名开启
- hough变换检测直线 matlab,求能够运行的用matlab进行hough变换直线检测的程序。急!...
- 52 两个链表的第一个公共结点(时间空间效率的平衡)
- 图书馆管理系统用户端心得
- 如何用outlook express 收发邮件
- 《Office 365开发入门指南》上市说明和读者服务
- c 语言银行排队系统,C++实现银行排队系统
- ASP.NET状态管理之六(缓存Cache)
- android串口service,Android串口操作库:EZ-SerialPort
- VARCHART XGantt 甘特图中的数据表介绍
- Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?
- 国家统计局长称今年经济增速可能超去年
- JavaScript防流量劫持-前端安全
- 2023年比较经典的软件测试工程师面试题(自我总结)
热门文章
- MyBatis Generator Example.Criteria 查询条件复制
- 记一次MyBatis的错误
- python——函数 10、函数的嵌套
- TCP/IP协议(二)tcp/ip基础知识
- SQL之rand,round,floor,ceiling,cast小数处理函数
- Nginx——事件驱动机制(雷霆追风问题,负载均衡)
- java web基础编程题_云课堂javaweb微专业Java基础测试题3
- Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期
- android有关的笔记,android学习笔记1——webview相关
- 【2012百度之星/初赛上】C:集合的交与并