Guest User

Untitled

a guest
Nov 17th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. #lang racket
  2.  
  3. (require pict
  4. pict/tree-layout)
  5.  
  6. ;; node is a BST structure,
  7. ;; recursively defined as one of:
  8. ;; empty
  9. ;; (make-node node node number)
  10. (define-struct node (left right val))
  11.  
  12. ;; (draw BST) returns a 2D pict of a BST, or #f if BST is empty.
  13. (define (draw BST)
  14. (define (visualize BST)
  15. (cond
  16. [(null? BST) #f]
  17. [else
  18. (define node-pict (cc-superimpose
  19. (disk 30 #:color "white")
  20. (text (number->string (node-val BST)))))
  21. (tree-layout #:pict node-pict
  22. (visualize (node-left BST))
  23. (visualize (node-right BST)))]))
  24. (if (null? BST)
  25. #f
  26. (naive-layered (visualize BST))))
  27.  
  28. ;; ===============================================================
  29.  
  30. ;; For example:
  31. ;; the following is an example binary search tree:
  32. (define example
  33. (make-node
  34. (make-node empty empty 3)
  35. (make-node
  36. (make-node empty empty 7)
  37. (make-node empty empty 10) 8) 5))
  38.  
  39. ;; Generate the 2D pict using draw (defined above)
  40. (define generated-pict (draw example))
  41.  
  42. ;; Convert generated pict to bitmap and save it as a png
  43. (send (pict->bitmap generated-pict)
  44. save-file "example.png" 'png)
Add Comment
Please, Sign In to add comment