2014-03-29 29 views
1

我有一个节点类,我只是想在向我的树添加元素时缩小问题范围。我认为我的节点类没有正确地创建要添加到树中的节点。我打印每个节点时,它都会返回内存地址。我似乎无法让它打印任何其他内容。任何帮助确定我的节点类是否有问题都会很好。Java:二叉树节点只显示内存地址或空

什么我的程序打印的例子:

([[email protected]) 
([[email protected]) 
([[email protected]) 
([[email protected]) 

TreeNode类:

public class TreeNode { 

char[] data; 
TreeNode left, right, parent; 
// used for printing: 
int column; 
int row; 
int center; 


public TreeNode(char[] data) { 
    this.data = data; 
    left = right = parent = null; 
} 

@Override 
public String toString() { 
    return "(" + data + ")"; 
} 
public int return_letter(){ 
    char x = data[0]; 
    int b = Character.getNumericValue(x); 
    return b;   
} 

public int findMaxDepth() { 
    int lmax = 0; 
    int rmax = 0; 
    if (left != null) { 
     lmax = left.findMaxDepth(); 
    } 
    if (right != null) { 
     rmax = right.findMaxDepth(); 
    } 
    return 1 + Math.max(lmax, rmax); 
} 

} 
+1

你还没有真正描述您的问题...请向我们提供更多信息。一个简短但完整的程序演示这个问题会很有帮助。 –

+0

你可以请你发布任何错误消息? – sunrize920

+3

'@Override public String toString(){return“(”+ data +“)”;}'不会打印出你想要的东西。使用'Arrays.toString(data)'获得数组内容的字符串表示。 –

回答

1
public String toString() { 
    return "(" + data + ")"; 
} 

你的问题就在这里。 toString()正在返回内存引用data及其包含的元素。您可以使用Arrays.toString(data)这个方法里面得到数组元素的字符串表示,或者在你的方法是打印出的数据,做这样的事情:

for(int i = 0; i < data.length; i++){ 
    println(data[i]); 
}