二进制节点树,错误的父亲和儿子

时间:2018-01-06 15:09:28

标签: java tree binary-tree

我很难打印下面的树:

----------t1:---------- 
tree:(((1),2,(3)),4,((5),6,(7,(8)))) 
----------t2:---------- 
tree:(((1),2,((3),4)),5,(6,(7,(8)))) 
----------t3:---------- 
tree:((1),2,(3,(4,(5,(6,(7,(8))))))) 
----------t4:---------- 
tree:((((((((1),2),3),4),5),6),7),8) 

其中“父亲”没有括号,每个“儿子”都有一个括号取决于深度,图片是有深度的树。 这是我的代码:

private String toString(String acc,int length){


        if (left != null)
            acc =left.toString(acc, length + 1)+")"+",";

        // Adding two spaces 'length' times
        for (int i = 0; i < length; i++) {
            acc +="";
        }

        // adding the object data and new space
        acc += this.data.toString();

        if (right != null)
            acc = "("+right.toString(acc, length + 1);

        return acc;
    }

public String toString() {
    return "("+toString("", 0)+")";
}

代替打印:

   ----------t1:----------
tree:(((((1),23),45),678) 

----------t2:----------
tree:(((((1),23),4),5678) 

----------t3:----------
tree:(((((((1),2345678) 

----------t4:----------
tree:(1),2),3),4),5),6),7),8) 

在添加的图片中,树以深度

进行演示

Binary Node Tree - the right result with depth

1 个答案:

答案 0 :(得分:0)

实际上,每个节点都有一个左右括号。正如Stefan评论的那样,你不需要深度。这是代码:

public String toString() {
    String out = "(";
    if (this.left != null) {
        out += left.toString() + ",";
    }
    out += this.data;
    if (this.right != null) {
        out += "," + right.toString();
    }
    return out + ")";
}