Der erste Schritt ist inorder
erhalten, um eine Liste zurückzugeben. Angenommen, Sie möchten eine flache Liste, bedeutet dies, dass wir die Liste von inorder
für den linken Teilbaum, den aktuellen Knoten und den rechten Teilbaum nehmen und jede Liste davon anhängen können, um eine flache Liste von Knoten zu erzeugen Werte von ganz links von Ihrem Binärbaum auf der rechten Seite.
(define inorder
(λ (tree)
(append (inorder(node-left tree))
(list (node-x tree))
(inorder(node-right tree)))))
Beachten Sie, dass ich eine Liste der Länge 1 für den aktuellen Knoten erstellen, während die Unterbäume Listen zurückgeben werden. Dieses Skelett sollte ausreichen, um den Kopf darüber zu führen, wie Rekursion dieses Problem lösen wird.
Jetzt für den Fall, wo wir einen leeren Baum bekommen: Wenn wir einen leeren Baum haben, dann sollten wir eine leere Liste zurückgeben, da es keine Elemente zum Hinzufügen gibt. Dies ist einfach zu tun mit if
:
(define inorder
(λ (tree)
(if (empty? tree)
'()
(append (inorder(node-left tree))
(list (node-x tree))
(inorder(node-right tree))))))