题目:543 二叉树的直径。
又名:求 二叉树的 每个节点的左右子树高度和 的最大值。
题目描述
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
算法思路
依然递归。
这里是求每个节点作为根节点时的高度和。
返回值为最大深度。
直径就是左右子树的最大深度。
class Solution:
length=0
def diameterOfBinaryTree(self, root: TreeNode) -> int:
def dia(root):
if not root:return 0
leftlength=dia(root.left)
rightlength=dia(root.right)
self.length=max(self.length,leftlength+rightlength)
return max(leftlength,rightlength)+1
dia(root)
return self.length
执行用时 :48 ms, 在所有 Python3 提交中击败了80.63%的用户
内存消耗 :15.9 MB, 在所有 Python3 提交中击败了10.72%的用户