543. 二叉树的直径
难度简单给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。
示例 :
给定二叉树
1 / \ 2 3 / \ 4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
方法:深度优先搜索
class Solution: def diameterOfBinaryTree(self, root: TreeNode) -> int: self.ans = 1 def depth(node): # 访问到空节点了,返回0 if not node: return 0 # 左儿子为根的子树的深度 L = depth(node.left) # 右儿子为根的子树的深度 R = depth(node.right) # 计算d_node即L+R+1 并更新ans self.ans = max(self.ans, L + R + 1) # 返回该节点为根的子树的深度 return max(L, R) + 1 depth(root) return self.ans - 1
链接:https://leetcode.cn/problems/diameter-of-binary-tree/solution/er-cha-shu-de-zhi-jing-by-leetcode-solution/