Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. class Node(object):
  2. def __init__(self, x):
  3. self.val = x
  4. self.left = None
  5. self.right = None
  6.  
  7. def serilized_helper(res, root):
  8. if not root:
  9. res.append("#")
  10. else:
  11. res.append(str(root.val))
  12. serilized_helper(res, root.left)
  13. serilized_helper(res, root.right)
  14.  
  15. def serilized_tree(root):
  16. res = []
  17. serilized_helper(res, root)
  18. return " ".join(res)
  19.  
  20. def deserilized_helper(tree_iter):
  21. val = next(tree_iter)
  22. if val == "#":
  23. return None
  24. node = Node(int(val))
  25. node.left = deserilized_helper(tree_iter)
  26. node.right = deserilized_helper(tree_iter)
  27. return node
  28.  
  29. def deserilized_tree(tree_str):
  30. tree_str_iter = iter(tree_str.split(" "))
  31. root = deserilized_helper(tree_str_iter)
  32. return root
  33.  
  34. def preorder_traversal_helper(res, root):
  35. if not root:
  36. return
  37. res.append(root.val)
  38. preorder_traversal_helper(res, root.left)
  39. preorder_traversal_helper(res, root.right)
  40.  
  41. def preorder_traversal(root):
  42. res = []
  43. preorder_traversal_helper(res, root)
  44. return res
  45.  
  46. def inorder_traversal_helper(res, root):
  47. if not root:
  48. return
  49. inorder_traversal_helper(res, root.left)
  50. res.append(root.val)
  51. inorder_traversal_helper(res, root.right)
  52.  
  53. def inorder_traversal(root):
  54. res = []
  55. inorder_traversal_helper(res, root)
  56. return res
  57.  
  58. def main():
  59. n1 = Node(1)
  60. n2 = Node(-2)
  61. n3 = Node(3)
  62. n4 = Node(4)
  63. n5 = Node(5)
  64.  
  65. n1.left = n2
  66. n1.right = n3
  67. n3.left = n4
  68. n3.right = n5
  69.  
  70. tree_str = serilized_tree(n1)
  71. print(tree_str)
  72. expected_tree_str = "12##34##5##"
  73. if tree_str == expected_tree_str:
  74. print("Serilized succeed.")
  75.  
  76. # check if deserilized succeed.
  77. print("Preorder traversal. Be caution only preorder can't identify a tree")
  78. print(preorder_traversal(n1))
  79. print("Inorder traversal.")
  80. print(inorder_traversal(n1))
  81.  
  82. new_root = deserilized_tree(tree_str)
  83. print("Deserilized tree preorder traversal")
  84. print(preorder_traversal(new_root))
  85. print("Deserilized tree inorder traversal")
  86. print(inorder_traversal(new_root))
  87.  
  88. if __name__ == "__main__":
  89. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement