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