1、前言
题目描述2、思路
一看到这道题,我就想到使用求二叉树的最大深度的思路。求最大深度是,我们先求出左子树的最大深度,再求出右子树的最大深度,然后再返回最大的。最后的返回值确实只有一个,但是我们可以定义一个全局遍历,在返回之前,先让 left + right 与全局变量比较,取最大的。
最后结果返回的时候,为全局变量。
3、代码
public class Q543_DiameterOfBinaryTree {
private int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
if(root == null){
return 0;
}
dfs(root);
return max;
}
private int dfs(TreeNode root){
if(root == null){
return 0;
}
int left = dfs(root.left);
int right = dfs(root.right);
max = Math.max(max, left + right);
return Math.max(left, right) + 1;
}
}
网友评论