用java实现二叉树数据结构

用java实现二叉树数据结构,java,tree,binary,Java,Tree,Binary,我试图用java实现一个二叉树数据结构。这是我的密码。我对java非常陌生,不太了解我的错误在哪里。非常感谢。我收到了这个错误消息:binTree.java:21:error:需要类、接口或枚举 class Node { int value; Node left; Node right; Node(int value) { this.value = value; right = null; left = null; } } public class BinTree {

我试图用java实现一个二叉树数据结构。这是我的密码。我对java非常陌生,不太了解我的错误在哪里。非常感谢。我收到了这个错误消息:binTree.java:21:error:需要类、接口或枚举

class Node {
int value;
Node left;
Node right;

Node(int value) {
    this.value = value;
    right = null;
    left = null;
}
}

public class BinTree {

Node root;

}
private Node addRecursive(Node current, int value) {
if (current == null) {
    return new Node(value);
}

if (value < current.value) {
    current.left = addRecursive(current.left, value);
} else if (value > current.value) {
    current.right = addRecursive(current.right, value);
} else {
    // value already exists
    return current;
}

return current;
}
public void add(int value) {
root = addRecursive(root, value);
}
System.out.println();
    System.out.println("testcase 1:");
    BinTree binTree2 = new BinTree();
    binTree2.insertNode(new Node(3));
    binTree2.insertNode(new Node(201));
    binTree2.insertNode(new Node(60));
    binTree2.insertNode(new Node(30));
    binTree2.insertNode(new Node(45));
    binTree2.treeWalk();
类节点{
int值;
左淋巴结;
节点权;
节点(int值){
这个值=值;
右=空;
左=空;
}
}
公共类二叉树{
节根;
}
私有节点addRecursive(节点当前,int值){
如果(当前==null){
返回新节点(值);
}
如果(值<当前值){
current.left=addRecursive(current.left,value);
}else if(值>当前值){
current.right=addRecursive(current.right,value);
}否则{
//值已存在
回流;
}
回流;
}
公共void add(int值){
root=addRecursive(根,值);
}
System.out.println();
System.out.println(“测试用例1”);
BinTree binTree2=新的BinTree();
binTree2.insertNode(新节点(3));
binTree2.insertNode(新节点(201));
binTree2.insertNode(新节点(60));
binTree2.insertNode(新节点(30));
binTree2.insertNode(新节点(45));
binTree2.treeWalk();

您在节点根字段后面的第21行使用了一个右括号,不应该在该行中使用
此外,您还需要一个main方法或Junit tedt用例来启动测试(在底部,在System.out.println()之前启动)

您的方法需要放在类BinTree中,您要执行的代码需要包装在一个主函数中,如下所示

public class BinTree {

    Node root;


    private Node addRecursive(Node current, int value) {
        if (current == null) {
            return new Node(value);
        }

        if (value < current.value) {
            current.left = addRecursive(current.left, value);
        } else if (value > current.value) {
            current.right = addRecursive(current.right, value);
        } else {
        // value already exists
            return current;
        }

        return current;
    }

    public void add(int value) {
        root = addRecursive(root, value);
    }

    public static void main(String []args){
        System.out.println();
        System.out.println("testcase 1:");
        BinTree binTree2 = new BinTree();
        binTree2.insertNode(new Node(3));
        binTree2.insertNode(new Node(201));
        binTree2.insertNode(new Node(60));
        binTree2.insertNode(new Node(30));
        binTree2.insertNode(new Node(45));
        binTree2.treeWalk();
    }

}
公共类二叉树{
节根;
私有节点addRecursive(节点当前,int值){
如果(当前==null){
返回新节点(值);
}
如果(值<当前值){
current.left=addRecursive(current.left,value);
}else if(值>当前值){
current.right=addRecursive(current.right,value);
}否则{
//值已存在
回流;
}
回流;
}
公共void add(int值){
root=addRecursive(根,值);
}
公共静态void main(字符串[]args){
System.out.println();
System.out.println(“测试用例1”);
BinTree binTree2=新的BinTree();
binTree2.insertNode(新节点(3));
binTree2.insertNode(新节点(201));
binTree2.insertNode(新节点(60));
binTree2.insertNode(新节点(30));
binTree2.insertNode(新节点(45));
binTree2.treeWalk();
}
}

看起来您缺少了一些方法,如insertNode和treeWalk,但应该在实现这些方法后进行编译。

修复缩进并检查大括号。在Java中,不能在类之外有方法,也不能在方法或初始值设定项块之外有语句!第二个问题:我将如何实施这些方法?这是学校作业吗?