力扣543二叉树的直径(深度优先搜索法(递归))

发布时间:2026/10/30 4:47:23
力扣543二叉树的直径(深度优先搜索法(递归))

543. 二叉树的直径 - 力扣(LeetCode)

二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。

即求路径经过节点数最大值 - 1

假设我们已知某节点左儿子向下遍历经过最多节点数L、右儿子向下遍历经过最多节点数R

则以该节点为起点的节点数最大值为L + R + 1

定义一个递归函数depth(node),函数返回该节点为根的子树的深度,计算过程中会顺带计算最大节点数

class Solution { int ans; public int diameterOfBinaryTree(TreeNode root) { ans = 1; depth(root); return ans -1; } int depth(TreeNode node){ if(node == null) return 0; int L = depth(node.left); int R = depth(node.right); ans = Math.max(ans,L+R+1); return Math.max(L,R) + 1; } }