无法从 True 获取根节点值。而是给出最后一个节点的值
Unable to get root node value from True. Instead gives the last nodes' value
我有一个 public class Q5,它有一个嵌套的私有静态 class BinTree。
在 main 中,我创建了 q5 对象并给了 3 个节点以添加到树中。
当我尝试获取根的值时,它 returns 最后一个节点的值。(这里应该返回 1 而不是 returns 3)
public class Q5 {
private static BinTree root;
public Q5(int ... args)
{
BinTree binTreeLeftChild,binTreeRightChild,root;
root = new BinTree();
binTreeLeftChild = new BinTree();
binTreeRightChild = new BinTree();
root.value = args[0];
binTreeLeftChild.value = args[1];
binTreeRightChild.value = args[2];
root.left = binTreeLeftChild;
root.right = binTreeRightChild;
}
private static class BinTree
{
private static BinTree left;
private static BinTree right;
private static int value;
public BinTree()
{
// TODO Auto-generated constructor stub
left = null;
right = null;
value = 0;
}
}
public static void main(String[] args)
{
Q5 q5 = new Q5(1,2,3);
System.out.println(q5.root.value);
}
您需要删除 BinTree
中的 static
标识符,否则 class 的所有对象将共享相同的值。
在 Q5(int ... args)
中,您有一个私有变量,它隐藏了 class 变量 root
。你也需要删除它。
更正后的代码:
public class Q5 {
private static BinTree root;
public Q5(int ... args) {
BinTree binTreeLeftChild,binTreeRightChild;
root = new BinTree();
binTreeLeftChild = new BinTree();
binTreeRightChild = new BinTree();
root.value = args[0];
binTreeLeftChild.value = args[1];
binTreeRightChild.value = args[2];
root.left = binTreeLeftChild;
root.right = binTreeRightChild;
}
private static class BinTree{
private BinTree left;
private BinTree right;
private int value;
public BinTree() {
// TODO Auto-generated constructor stub
left = null;
right = null;
value = 0;
}
}
...
}
我认为问题出在你的 "static" 上。尝试为您的 BinTree 使用非静态变量。
我有一个 public class Q5,它有一个嵌套的私有静态 class BinTree。 在 main 中,我创建了 q5 对象并给了 3 个节点以添加到树中。
当我尝试获取根的值时,它 returns 最后一个节点的值。(这里应该返回 1 而不是 returns 3)
public class Q5 {
private static BinTree root;
public Q5(int ... args)
{
BinTree binTreeLeftChild,binTreeRightChild,root;
root = new BinTree();
binTreeLeftChild = new BinTree();
binTreeRightChild = new BinTree();
root.value = args[0];
binTreeLeftChild.value = args[1];
binTreeRightChild.value = args[2];
root.left = binTreeLeftChild;
root.right = binTreeRightChild;
}
private static class BinTree
{
private static BinTree left;
private static BinTree right;
private static int value;
public BinTree()
{
// TODO Auto-generated constructor stub
left = null;
right = null;
value = 0;
}
}
public static void main(String[] args)
{
Q5 q5 = new Q5(1,2,3);
System.out.println(q5.root.value);
}
您需要删除 BinTree
中的 static
标识符,否则 class 的所有对象将共享相同的值。
在 Q5(int ... args)
中,您有一个私有变量,它隐藏了 class 变量 root
。你也需要删除它。
更正后的代码:
public class Q5 {
private static BinTree root;
public Q5(int ... args) {
BinTree binTreeLeftChild,binTreeRightChild;
root = new BinTree();
binTreeLeftChild = new BinTree();
binTreeRightChild = new BinTree();
root.value = args[0];
binTreeLeftChild.value = args[1];
binTreeRightChild.value = args[2];
root.left = binTreeLeftChild;
root.right = binTreeRightChild;
}
private static class BinTree{
private BinTree left;
private BinTree right;
private int value;
public BinTree() {
// TODO Auto-generated constructor stub
left = null;
right = null;
value = 0;
}
}
...
}
我认为问题出在你的 "static" 上。尝试为您的 BinTree 使用非静态变量。