题目描述
题解
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.max_r = 0
def diameterOfBinaryTree(self, root: TreeNode) -> int:
self.depth(root)
return self.max_r
def depth(self,node):
if not node:return 0
left = self.depth(node.left)
right = self.depth(node.right)
self.max_r = max(self.max_r,left+right)
return max(left+1,right+1)
总结
1、
注意直径的含义,区别于二叉树深度。即直径不一定是包含根节点的
2、
3种情况组合。
(1)包含根节点
(2)根节点左子树一侧
(3)根节点右子树一侧