BST的有序打印

时间:2019-02-13 08:14:35

标签: testing binary-search-tree

我正在尝试在下面测试我的toString方法,但出现错误。我试图使用调试器,但那也冻结了我。这是故障跟踪:

java.lang.StackOverflowError
    at java.lang.String.valueOf(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at Rectangle1.BinaryNode.toString(BinaryNode.java:158)
    at Rectangle1.BinaryNode.toString(BinaryNode.java:161)

我的测试方法(当我注释掉最后一个断言时,测试通过):

    public void testToString() {
        assertEquals("null, 15, 10", node3.toString());
        node3.setLeft(node2);
        assertEquals("10, 15, 10", node3.toString());
        node3.left().setRight(node2);
        assertEquals(10, node3.left().right().key(), 0.1);
        assertNull(node3.left().left());
        assertEquals("10, 10, 15, 10", node3.toString());
    }

这是toString()方法:

@Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        if (left != null)
        {
            builder.append(left.toString() + ", ");
        }
        builder.append(key);
        if (right != null)
        {
            builder.append(", " + right.toString());
        }
        return builder.toString();
    }

一个节点声明为:

private BinaryNode<Integer, String> node1;
private BinaryNode<Integer, String> node2;
private BinaryNode<Integer, String> node3;

this.node1 = new BinaryNode<>();
this.node2 = new BinaryNode<>(10, "bonjr");
this.node3 = new BinaryNode<>(15, "Chika", node1, node2);

0 个答案:

没有答案