Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. (defun tree-node (val children)
  2. (cons val children))
  3.  
  4. (defun node-value (node)
  5. (car node))
  6.  
  7. (defun node-children (node)
  8. (cdr node))
  9.  
  10. (defun node-value-multi (nodes)
  11. (if (null nodes)
  12. '()
  13. (cons (node-value (car nodes))
  14. (node-value-multi (cdr nodes)))))
  15.  
  16. (defun node-children-multi (nodes)
  17. (if (null nodes)
  18. '()
  19. (append (node-children (car nodes))
  20. (node-children-multi (cdr nodes)))))
  21.  
  22. (defun tree-values-dfs (root)
  23. (cons (node-value root)
  24. (tree-values-dfs-multi (node-children root))))
  25.  
  26. (defun tree-values-dfs-multi (roots)
  27. (if (null roots)
  28. '()
  29. (append (tree-values-dfs (car roots))
  30. (tree-values-dfs-multi (cdr roots)))))
  31.  
  32. (defun tree-values-bfs (root)
  33. (tree-values-bfs-multi (list root)))
  34.  
  35. (defun tree-values-bfs-multi (roots)
  36. (if (null roots)
  37. '()
  38. (append (node-value-multi roots)
  39. (tree-values-bfs-multi (node-children-multi roots)))))
  40.  
  41. (defun binary-tree-node (val left-child right-child)
  42. (list val left-child right-child))
  43.  
  44. (defun left-child (node)
  45. (cadr node))
  46.  
  47. (defun right-child (node)
  48. (caddr node))
  49.  
  50. (defun bt-node-children (node)
  51. (remove nil (cdr node)))
  52.  
  53. (defun elementp (el tree)
  54. (if (null tree)
  55. nil
  56. (let ((val (node-value tree)))
  57. (or (= el (node-value tree))
  58. (and (< el val) (elementp el (left-child tree)))
  59. (and (> el val) (elementp el (right-child tree)))))))
  60.  
  61. (defun my-adjoin (elem tree)
  62. (if (null tree)
  63. (binary-tree-node elem nil nil)
  64. (let ((val (node-value tree))
  65. (left (left-child tree))
  66. (right (right-child tree)))
  67. (cond ((= elem val) tree)
  68. ((< elem val) (binary-tree-node val
  69. (my-adjoin elem left)
  70. right))
  71. (t (binary-tree-node val
  72. left
  73. (my-adjoin elem right)))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement