1

追加を使用せずに順序通りのトラバーサルを記述しようとしています。これが私のコードです

 (define inorder
    (lambda (tree)
      (define inorder-iter
        (lambda (tree list)
          (if (empty-tree? tree)
               list
               (cons (inorder-iter (left-subtree tree) 
                     (root tree) 
                     (inorder-iter (right-subtree tree) list)))))

    (inorder-iter tree '() )))

  (define empty-tree? null?)

  (define root car)

  (define left-subtree cadr)

  (define right-subtree caddr)


 tree-1
(9
 (6 (5 () ()) ())
 (18 (11 () (13 () (17 () ()))) (65 (52 (41 (39 () ()) ()) ()) (99 () ()))))

(inorder tree-1) を呼び出すと、 (((5 . 6) . 9) (11 13 17 . 18) (((39 . 41) . 52) . 65) 99) が得られます。私が取得しようとしているのは '(5 6 9 11 13 17 18 39 41 52 65 99) です。私は正確に何を間違っていますか?ありがとうございました!

4

1 に答える 1