递归得到二叉树的最大深度
参考题目
LeetCode 104. 二叉树的最大深度
实现代码
class Solution:
def maxDepth(self, root):
if root is None:
return 0
else:
left_height = self.maxDepth(root.left)
right_height = self.maxDepth(root.right)
return max(left_height, right_height) + 1
递归得到二叉树的直径
参考题目
LeetCode 543. 二叉树的直径
实现代码
class Solution:
def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
def getTreeDepth(root):
if not root:
return 0
leftDepth = getTreeDepth(root.left)
rightDepth = getTreeDepth(root.right)
return max(leftDepth, rightDepth) + 1
def dfs(root):
if not root:
return
leftDepth, rightDepth = 0, 0
if root.left:
leftDepth = max(leftDepth, getTreeDepth(root.left))
if root.right:
rightDepth = max(rightDepth, getTreeDepth(root.right))
nonlocal res
res = max(res, leftDepth + rightDepth)
if root.left:
dfs(root.left)
if root.right:
dfs(root.right)
res = 0
dfs(root)
return res