{def walk {def walk.r {lambda {:o :t} {if {W.equal? :t nil} then else {if {W.equal? :o preorder} then {A.get 0 :t} else} {walk.r :order {A.get 1 :t}} {if {W.equal? :o inorder} then {A.get 0 :t} else} {walk.r :order {A.get 2 :t}} {if {W.equal? :o postorder} then {A.get 0 :t} else} }}} {lambda {:o :t} {S.replace \s by space in {walk.r :o :t}}}} {def sort {lambda {:o :t} {S.sort :o {walk preorder :t}}}} {def T {A.new 1 {A.new 2 {A.new 4 {A.new 7 nil nil} nil} {A.new 5 nil nil}} {A.new 3 {A.new 6 {A.new 8 nil nil} {A.new 9 nil nil}} nil}}} {walk preorder {T}} -> 1 2 4 7 5 3 6 8 9 {walk inorder {T}} -> 7 4 2 5 1 8 6 9 3 {walk postorder {T}} -> 7 4 5 2 8 9 6 3 1 {sort < {T}} -> 1 2 3 4 5 6 7 8 9 {sort > {T}} -> 9 8 7 6 5 4 3 2 1