Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA在二叉树的方法参数中传递根_Java_Data Structures - Fatal编程技术网

JAVA在二叉树的方法参数中传递根

JAVA在二叉树的方法参数中传递根,java,data-structures,Java,Data Structures,我试图在二叉树中找到最大元素。我有两个类和一个内部类。现在,当我从第二个classi.e TreeMap调用第一个类中的findmax方法时,我需要将树的根作为参数传递。我已在树中插入元素,它将按预期显示 但是,当将根作为参数传递时,它将接受null。但是,在我的情况下,第一个根元素是50。在findMax方法中,我应该如何将第一个元素作为参数作为根传递。希望我的问题清楚。。。。 提前谢谢。我希望得到Java语言的答案 您正在尝试从静态上下文访问实例变量。主要的方法是静态的。因此,它不能引用树类

我试图在二叉树中找到最大元素。我有两个类和一个内部类。现在,当我从第二个classi.e TreeMap调用第一个类中的findmax方法时,我需要将树的根作为参数传递。我已在树中插入元素,它将按预期显示

但是,当将根作为参数传递时,它将接受null。但是,在我的情况下,第一个根元素是50。在findMax方法中,我应该如何将第一个元素作为参数作为根传递。希望我的问题清楚。。。。 提前谢谢。我希望得到Java语言的答案


您正在尝试从静态上下文访问实例变量。主要的方法是静态的。因此,它不能引用树类的实例变量root。这甚至不应该编译

通常,在这种情况下,您要做的是将findMaxNode方法设置为私有。您还可以在树类中添加另一个无参数findMax方法:

public int findMax(){
    return findMax(root);
}
这样,您可以调用tree.findMax;从主方法开始,无需担心哪一个是根节点。根节点的概念封装在树类中

如果确实希望从静态上下文引用根节点,则需要:

将根实例变量的访问修饰符更改为public 在静态上下文中指定要引用的树对象。即树根
但这将被认为是不好的做法,因为您正在公开树类的内部结构。上面的另一个选项会更好。

我需要int a=theTree的帮助。findMaxroot,这一点是我无法传递根的地方,因为树在这一点上没有定义。如果root是一个公共/受保护的字段,您可以使用tree.root获得它。谢谢:…将尝试您的建议并返回有另一种方法将root设置为null。感谢Alderath提供的提示,因为除了我的好友指出的上述错误外,我还犯了您说过的上述错误
public int findMax(){
    return findMax(root);
}