在java中调用类的多个实例时出现问题

在java中调用类的多个实例时出现问题,java,Java,调用已编写的类的多个实例(Tree、TreeNode)时遇到问题 在主方法中,即使两棵树明显不同,系统也会给出输出cdjcdj。 如果将两个postOrder()调用分开(每个调用都是在树被推入堆栈之后调用的) 树类的代码 导入java.util.* 公共类树{ static TreeNode root; int size; public Tree() { root = null; } public Tree(TreeNode root) { Tree.root = root

调用已编写的类的多个实例(Tree、TreeNode)时遇到问题 在主方法中,即使两棵树明显不同,系统也会给出输出cdjcdj。 如果将两个postOrder()调用分开(每个调用都是在树被推入堆栈之后调用的)

树类的代码

导入java.util.*

公共类树{

static TreeNode root;
int size;

public Tree() {
    root = null;
}

public Tree(TreeNode root) {
    Tree.root = root;
}

public TreeNode getRoot() {
    return this.root;
}

public int getLvl(TreeNode node) {
    return node.lvlCount;
}

public void setLeft(TreeNode node, TreeNode left) {
    node.left = left;
}

public void setRight(TreeNode node, TreeNode right) {
    node.right = right;
}
public static void postOrder(TreeNode root) {
    if (root != null) {

        postOrder(root.left);
        postOrder(root.right);
        System.out.print(root.item + " ");

    } else {
        return;
    }

}

public static int getSize(TreeNode root) {
    if (root != null) {
        return 1 + getSize(root.left) +
    getSize(root.right);
    } else {
        return 0;
    }
}

public static boolean isEmpty(Tree Tree) {
    return Tree.root == null;
} }

您的问题就在这里,在
树中
类中:

static TreeNode root;
您应该删除单词
static
,并将
Tree.root
替换为
this.root


添加关键字
static
会导致变量
root
在程序中
树的所有实例之间共享,这不是您想要的。

您的问题在这里,在
树中
类:

static TreeNode root;
您应该删除单词
static
,并将
Tree.root
替换为
this.root

添加关键字
static
会导致变量
root
在程序中
树的所有实例之间共享,这不是您想要的

static TreeNode root;
int size;

public Tree() {
    root = null;
}

public Tree(TreeNode root) {
    Tree.root = root;
}

public TreeNode getRoot() {
    return this.root;
}

public int getLvl(TreeNode node) {
    return node.lvlCount;
}

public void setLeft(TreeNode node, TreeNode left) {
    node.left = left;
}

public void setRight(TreeNode node, TreeNode right) {
    node.right = right;
}
public static void postOrder(TreeNode root) {
    if (root != null) {

        postOrder(root.left);
        postOrder(root.right);
        System.out.print(root.item + " ");

    } else {
        return;
    }

}

public static int getSize(TreeNode root) {
    if (root != null) {
        return 1 + getSize(root.left) +
    getSize(root.right);
    } else {
        return 0;
    }
}

public static boolean isEmpty(Tree Tree) {
    return Tree.root == null;
} }
static TreeNode root;