Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. struct Node {
  2. key int
  3.  
  4. pub mut:
  5. left &Node
  6. right &Node
  7. }
  8.  
  9. fn create_node(key int) &Node {
  10. node := &Node {
  11. key: key
  12. }
  13.  
  14. return node
  15. }
  16.  
  17. fn insert(parent mut Node, key int) &Node {
  18. if isnil(parent) {
  19. println('node is null, we have found a spot for $key')
  20. return create_node(key)
  21. }
  22.  
  23. if key < parent.key {
  24. println('$key is less than $parent.key, continue left')
  25. parent.left = insert(mut parent.left, key)
  26. } else if key > parent.key {
  27. println('$key is greater than $parent.key, continue right')
  28. parent.right = insert(mut parent.right, key)
  29. } else {
  30. println('$key is equal to $parent.key, default to left')
  31. parent.left = insert(mut parent.left, key)
  32. }
  33.  
  34. return parent
  35. }
  36.  
  37. fn inorder(node Node){
  38. println('inorder traversal')
  39.  
  40. if isnil(node){
  41. println('Reached a null node')
  42. return
  43. }
  44.  
  45. inorder(node.left)
  46. println(node.key)
  47. inorder(node.right)
  48. }
  49.  
  50. fn main() {
  51. mut head := create_node(10)
  52. head = insert(mut head, 9)
  53. println('')
  54.  
  55. head = insert(mut head, 12)
  56. println('')
  57.  
  58. head = insert(mut head, 13)
  59. println('')
  60.  
  61. inorder(head)
  62. }
  63.  
  64.  
  65.  
  66. ==== OUTPUT ====
  67. 9 is less than 10, continue left
  68. node is null, we have found a spot for 9
  69.  
  70. 12 is greater than 10, continue right
  71. node is null, we have found a spot for 12
  72.  
  73. 13 is greater than 10, continue right
  74. 13 is greater than 12, continue right
  75. node is null, we have found a spot for 13
  76.  
  77. inorder traversal
  78. inorder traversal
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement