Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Tree-traversal/ACL2/tree-traversal.acl2
Normal file
47
Task/Tree-traversal/ACL2/tree-traversal.acl2
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
(defun flatten-preorder (tree)
|
||||
(if (endp tree)
|
||||
nil
|
||||
(append (list (first tree))
|
||||
(flatten-preorder (second tree))
|
||||
(flatten-preorder (third tree)))))
|
||||
|
||||
(defun flatten-inorder (tree)
|
||||
(if (endp tree)
|
||||
nil
|
||||
(append (flatten-inorder (second tree))
|
||||
(list (first tree))
|
||||
(flatten-inorder (third tree)))))
|
||||
|
||||
(defun flatten-postorder (tree)
|
||||
(if (endp tree)
|
||||
nil
|
||||
(append (flatten-postorder (second tree))
|
||||
(flatten-postorder (third tree))
|
||||
(list (first tree)))))
|
||||
|
||||
(defun flatten-level-r1 (tree level levels)
|
||||
(if (endp tree)
|
||||
levels
|
||||
(let ((curr (cdr (assoc level levels))))
|
||||
(flatten-level-r1
|
||||
(second tree)
|
||||
(1+ level)
|
||||
(flatten-level-r1
|
||||
(third tree)
|
||||
(1+ level)
|
||||
(put-assoc level
|
||||
(append curr (list (first tree)))
|
||||
levels))))))
|
||||
|
||||
(defun flatten-level-r2 (levels max-level)
|
||||
(declare (xargs :measure (nfix (1+ max-level))))
|
||||
(if (zp (1+ max-level))
|
||||
nil
|
||||
(append (flatten-level-r2 levels
|
||||
(1- max-level))
|
||||
(reverse (cdr (assoc max-level levels))))))
|
||||
|
||||
|
||||
(defun flatten-level (tree)
|
||||
(let ((levels (flatten-level-r1 tree 0 nil)))
|
||||
(flatten-level-r2 levels (len levels))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue