insert(new Node('D', 'D')); $bst->insert(new Node('I', 'I')); $bst->insert(new Node('N', 'N')); $bst->insert(new Node('O', 'O')); $bst->insert(new Node('S', 'S')); $bst->insert(new Node('A', 'A')); $bst->insert(new Node('U', 'U')); $bst->insert(new Node('R', 'R')); self::assertEquals( [ 'key' => 'D', 0 => ['key' => 'I'], 1 => ['key' => 'I'], ], $bst->toArray() ); $bst->delete($bst->search('I')); $bst->insert(new Node('Z', 'Z')); // @todo: this breaks stuff, why? //$bst->delete($bst->search('S')); //$bst->insert(new Node('T', 'T')); self::assertEquals( [ 'key' => 'D', 0 => ['key' => 'I'], 1 => ['key' => 'I'], ], $bst->toArray() ); } }