Advertisement
nein_yards

task 2 pm 2021

Jan 26th, 2021 (edited)
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. class Node:
  2. data = ''
  3. left = None
  4. right = None
  5.  
  6. max_nodes = 15
  7. tree = [Node() for i in range(max_nodes)]
  8. head = None
  9. freePtr = 0
  10.  
  11. def initialise_tree():
  12. global tree, head, freePtr, max_nodes
  13. for i in range(max_nodes - 1):
  14. tree[i].left = i + 1
  15. tree[max_nodes - 1].left = None
  16. return tree
  17.  
  18.  
  19. def insert_node(data):
  20. global tree, head, freePtr
  21. if freePtr is None:
  22. print('Insert failed - tree is full!')
  23. return
  24. newNodePtr = freePtr
  25. freePtr = tree[freePtr].left
  26. tree[newNodePtr].data = data
  27. tree[newNodePtr].left = None
  28. tree[newNodePtr].right = None
  29.  
  30. if head is None:
  31. head = newNodePtr
  32. return
  33. curr_ptr = head
  34. while curr_ptr is not None:
  35. prev_ptr = curr_ptr
  36. if data < tree[curr_ptr].data:
  37. curr_ptr = tree[curr_ptr].left
  38. turned_left = True
  39. else:
  40. curr_ptr = tree[curr_ptr].right
  41. turned_left = False
  42.  
  43. if turned_left:
  44. tree[prev_ptr].left = newNodePtr
  45. else:
  46. tree[prev_ptr].right = newNodePtr
  47.  
  48. def print_tree_inorder():
  49. global tree, head
  50. if head is None: return
  51. def recur(curr_ptr):
  52. if tree[curr_ptr].left is not None:
  53. recur(tree[curr_ptr].left)
  54. print(tree[curr_ptr].data)
  55. if tree[curr_ptr].right is not None:
  56. recur(tree[curr_ptr].right)
  57. recur(head)
  58.  
  59. def index_of(data):
  60. global tree, head
  61. curr_ptr = head
  62. while curr_ptr is not None:
  63. if data < tree[curr_ptr].data:
  64. curr_ptr = tree[curr_ptr].left
  65. elif data > tree[curr_ptr].data:
  66. curr_ptr = tree[curr_ptr].right
  67. else:
  68. return curr_ptr
  69. return -1
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement