Рекурсивные значения переключения порядка порядка уровней - PullRequest
0 голосов
/ 06 февраля 2019

Когда некоторые наборы данных вставляются в дерево, значения в обходе порядка уровней меняются местами некорректно.Я знаю, что где-то допустил логическую ошибку, но не смог понять, в чем проблема.

Я пытался изменить направление влево / вправо вправо / влево, а также изменить логические операторы, чтобы попытаться выяснить, почему возникает проблема.Отладчик тоже не сильно помог.

    public void levelOrder() {
        int h = getHeightHelper(root);
        int i; 
    for (i = 1; i <= h; i++)
        printLevelHelper(root, i);
        System.out.println();
    }

    private int getHeightHelper(BinaryNode<?> root) {
    if (root == null)
        return 0; 
    else { 
        int leftHeight = getHeightHelper(root.left); 
        int rightHeight = getHeightHelper(root.right);

            if (leftHeight > rightHeight)
                return(leftHeight + 1); 
            else
            return (rightHeight + 1); 
    }
    }

    private void printLevelHelper(BinaryNode<?> root, int level) {
        if (root == null)
            return; 
        if (level == 1)
            System.out.print(root.element + " ");
        else if (level > 1) {
             printLevelHelper(root.left, level - 1);
             printLevelHelper(root.right, level - 1);
        }
    }
    private BinaryNode<AnyType> insert( AnyType x, BinaryNode<AnyType> t ) {
        if( t == null )
            return new BinaryNode<>( x, null, null ); 

        int compareResult = x.compareTo( t.element ); 

        if( compareResult < 0 )
            t.left = insert( x, t.left ); 
        else if( compareResult > 0 )
            t.right = insert( x, t.right );
        else
            ; // Duplicate, do nothing. 
        return t; 
    }

При вводе 8, 2, 10, 1, 6, 14, 4, 7, 13: ожидаемый порядок уровней - 8, 2, 10, 1, 6, 14, 4,7, 13 Однако результат следующий.1 и 6 поменялись местами.8, 2, 10, 6, 1, 14, 4, 7, 13

...