本文主要是介绍【力扣100】543.二叉树的直径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
添加链接描述
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def __init__(self):self.max = 0def diameterOfBinaryTree(self, root: TreeNode) -> int:self.depth(root)return self.maxdef depth(self, root):if not root:return 0l = self.depth(root.left)r = self.depth(root.right)'''每个结点都要去判断左子树+右子树的高度是否大于self.max,更新最大值'''self.max = max(self.max, l+r)# 返回的是高度return max(l, r) + 1
思路:
- 典型的求树高,然后把左右子树树高相加的题目
但是需要注意一个情况:
- 最大直径可能并不是左右子树相加,也可能是一颗子树中的最大直径
- 所以需要引入一个全局变量,记录每一个节点的最大直径
- 添加
__init__(self)
函数,然后把max值作为全局变量 - 每次比较
self.max = max(self.max, l+r)
这样才能不遗漏最大值
这篇关于【力扣100】543.二叉树的直径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!