Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. import hashlib
  2.  
  3.  
  4. class Node:
  5. def __init__(self, data):
  6. self.data = data
  7. self.left = None
  8. self.right = None
  9.  
  10.  
  11. def build_tree(in_order, pre_order, in_strt, in_end):
  12. if in_strt > in_end:
  13. return None
  14.  
  15. node = Node(pre_order[build_tree.pre_index])
  16. build_tree.pre_index += 1
  17.  
  18. if in_strt == in_end:
  19. return node
  20.  
  21. in_index = search(in_order, in_strt, in_end, node.data)
  22.  
  23. node.left = build_tree(in_order, pre_order, in_strt, in_index - 1)
  24. node.right = build_tree(in_order, pre_order, in_index + 1, in_end)
  25.  
  26. return node
  27.  
  28.  
  29. def search(arr, start, end, value):
  30. for i in range(start, end + 1):
  31. if arr[i] == value:
  32. return i
  33.  
  34.  
  35. def get_leaf_nodes(node, data_list):
  36. if node is None:
  37. return
  38.  
  39. if node.left is None and node.right is None:
  40. data_list.append(node.data)
  41.  
  42. get_leaf_nodes(node.left, data_list)
  43. get_leaf_nodes(node.right, data_list)
  44.  
  45. return data_list
  46.  
  47.  
  48. def read_order_file(file):
  49. order_list = []
  50. for line in open(file, 'r'):
  51. for word in line.split(" "):
  52. order_list.append(word)
  53.  
  54. return order_list
  55.  
  56. # in_order = [11, 0, 1, 13, 7, 12, 10, 2, 9, 3, 8, 1, 4]
  57. # pre_order = [2, 1, 0, 11, 7, 13, 10, 12, 3, 9, 1, 8, 4]
  58.  
  59. in_order = read_order_file('/home/milos/Downloads/challenge/inorder.txt')
  60. pre_order = read_order_file('/home/milos/Downloads/challenge/preorder.txt')
  61.  
  62. build_tree.pre_index = 0
  63. root = build_tree(in_order, pre_order, 0, len(in_order) - 1)
  64.  
  65. list = get_leaf_nodes(root, [])
  66. print(hashlib.md5(''.join(map(str, list)).encode('utf-8')).hexdigest())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement