私はラケットを初めて使いました。多くのウェブページを読みましたが、数字のリストとして一般的なツリーを実装するのに問題があります。 私は、標準入力から次の予約注文の木の入力に取っていた場合:予約注文の一般的なツリーをラケットに投稿する
1 3
2 2
5 0
6 0
3 1
7 0
4 4
8 0
9 0
10 0
11 1
12 0
最初の数はノードとの値を表し、第二の値は、ノードがを持っている子供の数を表します。 私のようにポスト・オーダーに変換する前に、私の予想結果を生成しようとしていることになります。これまでのところ、私は以下のいる
'(1 (2 (5 6)) (3 (7)) (4 (8 9 10 11 (12))))
:
(define recurse 0)
(define (getTreeInfo)
(local ((define line (read-line)))
(if (eof-object? line)
empty
(if (= recurse 1)
(makeTree (string->number(first (string-split line))) (- (string->number(second (string-split line))) 1))
(makeTree (string->number(first (string-split line))) (string->number(second (string-split line))))))))
(define (makeTree value numChildren)
(cond
[(= numChildren 0) (begin (set! recurse 0)
(printf "Recurse: ~a\n" recurse)
(cons)]
[else (begin (set! recurse 1)
(printf "Recurse: ~a\n" recurse)
(cons value (getTreeInfo)))]))
をコードが完全でも正確ではありませんが、それは私の思考プロセスの出発点です。 このトラバーサルにアプローチする方法はありますか?私はここで相互再帰が必要だと感じています。