Java:二叉树节点仅显示内存地址或null

时间:2014-03-29 19:33:03

标签: java binary-tree

我有一个节点类,我只是想在向树中添加元素时缩小问题范围。我认为我的节点类没有正确创建要添加到树中的节点。当我打印每个节点时,它会返回内存地址,我相信。我似乎无法将其打印出来。确定我的节点类是否有问题的任何帮助都会很棒。

我的程序打印的示例:

([C@f72003d)
([C@56dacb7)
([C@63662529)
([C@4711d9ba)

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 :(得分:1)

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

你的问题就在这里。 toString()返回data及其包含元素的内存引用。您可以在此方法中使用Arrays.toString(data)来获取数组中项目的字符串表示形式,或者在打印数据的方法中,执行以下操作:

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