题目描述
运行结果
解题思路
重点就是理解题意--肯定涉及到求树的深度
注意路径可以不过根节点(也就是可以不涉及右子树)
但最长路径一定是路过根节点或者各级子树的根节点
经过某个节点的路径的节点数:为其左右子树的深度+1(左子树的深度是从根节点到最下的节点数)
在求某个子树的深度时,将经过该子树的路径长度进行更新(记录最大值)
java代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int ans;
public int diameterOfBinaryTree(TreeNode root) {
ans=1;
heigth(root);
return ans-1;
}
//求子树的深度
public int heigth(TreeNode root){
if(root == null) return 0;
int L=heigth(root.left);
int R=heigth(root.right);
//使ans始终记录路径的最大值
ans=Math.max(L+R+1,ans);
return 1+Math.max(L,R);
}
}
京公网安备 11010502036488号