力扣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; } }