mercredi 13 février 2019

In-Order Printing of BST

I am trying to test my toString method below but get an error. I tried to use the debugger but that too freezes on me. Here is the failure trace:

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)

My test method (when I comment out the last assert, the test passes):

    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());
    }

And this is the toString() method:

@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();
    }

A node is declared as:

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);

Aucun commentaire:

Enregistrer un commentaire