Skip to main content

树形动态规划 Tree DP

543. Diameter of Binary Tree

dfs(node) = max(dfs(node), dfs(node.left) + dfs(node.right) + 2)

# 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 diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
ans = 0
def calc(node):
if node is None:
return -1
rLen = calc(node.right)
lLen = calc(node.left)
nonlocal ans
ans = max(ans, lLen + rLen + 2)
return max(rLen, lLen) + 1
calc(root)
return ans

Reference

  1. 树形 DP:树的直径【基础算法精讲 23】