0

整数のファイルから二分木をアセンダント形式で充電しようとしていますが、うまくいきません。

program trees;

type 
        fl = file of Integer
    ;   ltree = ^puntTree
    ;   puntTree = record
                val : Integer
            ;   big : ltree
            ; low : ltree
        end
    ;

procedure openFile ( var iFile: fl; name: String; var error: Boolean );
    begin
        error := false;
        assign ( iFile, name );
        {$I-}
            reset ( iFile );
        {$I+}   
        if ( ioResult <> 0 ) then
            error := true;
    end;


procedure loadTree ( var tree: ltree; var iFile: fl; var principalNode: ltree; position: Integer );
    var val
                :Integer
        ;   node
                :ltree
        ;
    begin
        if ( tree = nil ) then
            begin
                seek ( iFile, position );
                read ( iFile, val );
                new ( tree );
                tree^.val := val;
                tree^.low := nil;
                tree^.big := nil;
            end;

        if not eof ( iFile ) then
            begin
                read ( iFile, val );

                node := principalNode;

                while ( node <> nil ) do
                    if ( node^.val < val ) then
                        node := node^.big
                    else
                        node := node^.low;

                cargartree ( node, iFile, principalNode, ( position + 1 ) );
            end;
    end;

procedure printTree ( tree: ltree );
    begin
        if ( tree <> nil ) then
            begin
                printTree ( tree^.low );
                writeln ( tree^.val, ' - ' );
                printTree ( tree^.big );
            end;
    end;

var 
        tree
    ,   principalNode
            :ltree
    ;   iFile
            :fl
    ;   fileName
            :String
    ;   error
            :Boolean
    ;

begin
    readln ( fileName );
    abrirfile ( iFile, fileName, error );
    if not error then
        loadTree ( tree, principalNode, iFile, 0 );
    printTree(principalNode);
end.

これがコードです。

ファイルには 9 つの要素があります。

1 5 9 20 58 95 1 3 8

しかし、ツリーを印刷すると、コンソールには次のみが表示されます。

1 - 

それを修正する方法はありますか?ありがとう!

4

1 に答える 1