Leetcode 543. Diameter of Binary Tree
- 题目
- 解法:
题目
解法:
需要用到求树的深度,可以参考Leetcode Maximum Depth of Binary Tree 。 根据这边树的直径的定义应该是等于左边子树的深度和右边子树的深度。因为这边直径的定义是路程,而前面深度的定义是节点数。所以操作步骤其实跟求深度几乎一致,只是在求深度的时候更新直径的值就阔以了
python代码如下:
class Solution:def diameterOfBinaryTree(self, root: TreeNode) -> int:self.diameter = 0def get_depth(root):if not root:return 0l = get_depth(root.left)r = get_depth(root.right)self.diameter = max(self.diameter,l+r)return max(l,r)+1get_depth(root)return self.diameter
C++代码如下:
class Solution {
int diameter = 0;
public:int diameterOfBinaryTree(TreeNode* root) {
get_depth(root);return diameter;}int get_depth(TreeNode* root){
if (!root) return 0;int l = get_depth(root->left);int r = get_depth(root->right);diameter = max(diameter,l+r);return max(l,r)+1;}
};