Java 为什么不能在maxPath()中写入私有int d,而是在diameterOfBinaryTree()之前写入 类解决方案{ 私人int d; 二元树(树根)的公共内径{ d=0; 最大路径(根); 返回d; } 专用int maxPath(TreeNode节点){ 如果(node==null){返回0;} int leftDepth=maxPath(node.left); int rightDepth=maxPath(node.right); //d=数学最大值(d,leftDepth+rightDepth); 如果(d局部
在第二行,为什么“private int d”必须写在biarytree()的直径之前????我可以将其设置为public吗?Java 为什么不能在maxPath()中写入私有int d,而是在diameterOfBinaryTree()之前写入 类解决方案{ 私人int d; 二元树(树根)的公共内径{ d=0; 最大路径(根); 返回d; } 专用int maxPath(TreeNode节点){ 如果(node==null){返回0;} int leftDepth=maxPath(node.left); int rightDepth=maxPath(node.right); //d=数学最大值(d,leftDepth+rightDepth); 如果(d局部,java,Java,在第二行,为什么“private int d”必须写在biarytree()的直径之前????我可以将其设置为public吗?private,public和protected修饰符适用于成员,而不是局部变量(在定义它们的范围之外无法访问) 如果您希望从其他类而不仅仅是从解决方案的方法内部访问d公共,则可以将其设置为公共。1),因为私有只能用于字段。将访问修饰符(private、public、protected)放在>局部
private
,public
和protected
修饰符适用于成员,而不是局部变量(在定义它们的范围之外无法访问)
如果您希望从其他类而不仅仅是从解决方案的方法内部访问
d
公共
,则可以将其设置为公共。1),因为私有
只能用于字段。将访问修饰符(private
、public
、protected
)放在>局部<变量上是没有意义的,因为局部变量无论如何都不能在方法之外访问。它们不在方法之外的任何代码的范围内。2) 您可以将字段top设置为公共
,但这是不可取的……通常问问自己:这个实例变量需要公共吗?如果答案不是肯定的“是!”,那么它可能应该是私有的。d
需要是一个实例变量,因为您在两个方法之间共享它。您可以重写代码,将值作为参数传递,并将新值作为返回值接收。
class Solution {
private int d;
public int diameterOfBinaryTree(TreeNode root) {
d = 0;
maxPath(root);
return d ;
}
private int maxPath (TreeNode node){
if (node == null) {return 0;}
int leftDepth = maxPath(node.left);
int rightDepth= maxPath(node.right);
// d = Math.max(d,leftDepth + rightDepth );
if (d < leftDepth + rightDepth) {d = leftDepth + rightDepth;}
return Math.max(leftDepth, rightDepth) +1;
}
}