【力扣日记】543 二叉树的直径

题目: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%的用户

发布了210 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/104759233