Diameter of Binary Tree
来源:互联网 发布:淘宝店被永久封店 编辑:程序博客网 时间:2024/06/05 15:25
求树的直径,其实就是对于每个节点左右子树深度和的最大值。
例如:
左边深度加右边深度,可知为3。但要注意下面的情况:
这时有个子节点的深度和(8)和已经超过根节点深度和(7)。
=============================
想法是对于每个节点的左右子树深度相加,取其中的最大值:
class Solution {public: int diameterOfBinaryTree(TreeNode* root) { if(!root) return 0; int leftH = 0, rightH = 0; if(root->left) leftH = getHeight(root->left); if(root->right) rightH = getHeight(root->right); return max((leftH + rightH), max(diameterOfBinaryTree(root->left), diameterOfBinaryTree(root->right))); }private: int getHeight(TreeNode* root) { if(!root) return 0; int left = getHeight(root->left); int right = getHeight(root->right); return left > right ? (left + 1) : (right + 1); }};
然而这样嵌套递归效率不高。
然后是别人家的代码:
public class Solution {public: int diameterOfBinaryTree(TreeNode root) { maxDepth(root); return max; }private: int max = 0; int maxDepth(TreeNode root) { if (root == null) return 0; int left = maxDepth(root.left); int right = maxDepth(root.right); max = max(max, left + right);//左右子树最大深度相加 return max(left, right) + 1;//取最大深度 }}
思路差不多,取左子树的最大深度,取右子树的最大深度,两者相加。
阅读全文
0 0
- Diameter of Binary Tree
- Diameter of Binary Tree
- Diameter of Binary Tree
- Diameter of Binary Tree
- Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- LeetCode543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- 543. Diameter of Binary Tree
- oracle数据库的字符集查询
- 面向对象,创建对象,构造函数,原型,原型链
- codevs 1080 线段树练习(基本模板 单点修改区间求和)
- Citrix-Netscaler-VPX-11.0
- 【备忘】传智播客最新大数据第3期实战培训完整版视频教程
- Diameter of Binary Tree
- Nginx的内部(进程)模型
- java的String、StringBuilder的equals源码解读
- 【JPA】 @OneToOne 一对一单向关联注解
- Ubuntu16.04+CUDA8.0+caffe配置
- 不要过度依赖JQuery(一)
- sql在mybatais中的强转
- java两种核心机制
- 【Solidity】7. 部件