Java实现 LeetCode 543 二叉树的直径
2024-10-09 05:51:19
543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
示例 :
给定二叉树
1
/ \
2 3
/ \
4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意:两结点之间的路径长度是以它们之间边的数目表示。
PS:
二叉树的直径不一定过根节点,因此需要去搜一遍所有子树(例如以root,root.left, root.right…为根节点的树)对应的直径,取最大值。
root的直径 = root左子树高度 + root右子树高度
root的高度 = max {root左子树高度, root右子树高度} + 1
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
dfs(root);
return max;
}
private int dfs(TreeNode root) {
if (root == null) {
return 0;
}
int leftHeight = dfs(root.left), rightHeight = dfs(root.right);
max = Math.max(leftHeight + rightHeight, max);
return Math.max(leftHeight, rightHeight) + 1;
}
}
最新文章
- MeshDog
- SpringJDBC解析3-回调函数(update为例)
- discuz论坛与其它网站登录注册整合
- yum只下载而不安装软件包?
- HDU 4974 Dracula and Ethan 优先队列
- Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)
- HDU5780 gcd 欧拉函数
- JavaScript奇技淫巧44招
- ORacle 复制表
- [BZOJ 2064]分裂
- 剑指Offer——银行考试
- mysql数据库连接语句一定要加传参的编码格式
- 7.12 vowels.c 程序
- C++的正则
- GitHub私有代码库将免费开放
- EF学习笔记-2 EF之支持复杂类型的实现
- Flutter - 添加从左向右滑动,返回上一个页面
- href=";javascript:void(0)"; 的用法
- linux提示usb_serial_generic_write_bulk_callback - urb stoped: -32
- Hibernate(六)一对多映射(多对一)
热门文章
- 关于 k210 的 micropython 添加 ussl 模块,实现 https 访问支持的那些事。
- sqlite聚合函数
- Adaboost原理及相关推导
- 疯狂VirtualBox实战讲学录 以及 virtualbox完全学习手册 之我见
- 利用js实现 禁用浏览器后退| 去除上一个历史记录链接
- oracle分析函数Rank, Dense_rank, row_number
- Linux——vim操作
- SVN创建分支的相关操作
- JS中的基本包装类型
- 三,<;ul>;<;li>;实际应用时遇到的问题