Advertisement
radchukd

Untitled

Apr 8th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. class SumTree:
  2.     def __init__(self):
  3.         self.root = None
  4.  
  5. class Node:
  6.     def __init__(self):
  7.         self.key = 0
  8.         self.left = None
  9.         self.right = None
  10.  
  11. def makeNode(key):
  12.     n = Node()
  13.     n.key = key
  14.     return n
  15.  
  16. def build_sum_tree(array):
  17.     return build_sum_tree2(array, 0, len(array))
  18.  
  19. def build_sum_tree2(array, startpos, length):
  20.     if length < 1:
  21.         return None
  22.     if length == 1:
  23.         return makeNode(array[startpos])
  24.     halflen = length/2
  25.     l = build_sum_tree2(array, startpos, halflen)
  26.     r = build_sum_tree2(array, startpos+halflen, length-halflen)
  27.     n = makeNode(l.key + r.key)
  28.     n.left = l
  29.     n.right = r
  30.     return n
  31.  
  32. def is_sum_tree(tree):
  33.     return is_sum_tree2(tree.root)
  34.  
  35. def is_sum_tree2(root):
  36.     n = makeNode(root.key)
  37.     if n.left is None or n.right is None:
  38.         pass
  39.     else:
  40.         if n.key != n.right + l.right:
  41.             return False
  42.         else:
  43.             is_sum_tree2(n.right)
  44.             is_sum_tree2(n.left)
  45.     return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement