@Override
    public void printSelf() {

        if ( list.size() == 0 ) {
            System.out.println( "Empty BST!" );
        }

        try {

            for ( int i = 0 ; i < list.size() ; i ++ ) {

                System.out.println( "---------------------------------------------" );

                Node node = list.retrieve( i );

                Node right = node.getRightChild();
                Node left = node.getLeftChild();

                if ( left != null && right != null ) {

                    System.out.printf( "Node = %d\tright=%d\tleft=%d\n" , node.getData() , right.getData() , left.getData() );

                }
                else if ( left == null && right != null ) {

                    System.out.printf( "Node = %d\tright=%d\t\tleft=EMPTY\n" , node.getData() , right.getData() );

                }
                else if ( left != null && right == null ) {

                    System.out.printf( "Node = %d\tright=EMPTY\tleft=%d\n" , node.getData() , left.getData() );

                }
                else {

                    System.out.printf( "Node = %d\tright=EMPTY\tleft=EMPTY\n" , node.getData() );

                }

            }

        } catch ( Exception error ) {

            System.out.println( error.getMessage() );

        }

    }