二叉树的直径

二叉树的直径

1、题目

图1

2、题解

深度优先搜索

递归计算当前节点的左右子树的路径,当前节点的直径值为\(max(左子树路径,右子树路径)+1\)。递归至树节点,该树的直径为左子树深度+右子树深度+1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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:
self.ans = 1

def dfs(node):
if not node: return 0

L = dfs(node.left)
R = dfs(node.right)
self.ans = max(self.ans, L+R+1)

return max(L,R)+1

dfs(root)

return self.ans - 1

二叉树的直径
http://example.com/2024/04/09/二叉树的直径/
作者
Z Z
发布于
2024年4月9日
许可协议