radchukd

Untitled

Apr 10th, 2018
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 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.     tree.root = array[startpos]
  21.     if length < 1:
  22.         return None
  23.     if length == 1:
  24.         makeNode(array[startpos])
  25.         return tree
  26.     halflen = length/2
  27.     l = build_sum_tree2(array, startpos, halflen)
  28.     r = build_sum_tree2(array, startpos+halflen, length-halflen)
  29.     tree. = makeNode(l.key + r.key)
  30.     n.left = l
  31.     n.right = r
  32.     return tree
  33.  
  34. def is_sum_tree(tree):
  35.     if tree.root == None:
  36.         return True
  37.     if is_sum_tree2(tree.root) == False:
  38.         return False
  39.     elif is_sum_tree2(tree.root) == None:
  40.         return True
  41.  
  42. def is_sum_tree2(node):
  43.     if node.left is not None and node.right is not None:  
  44.         if node.key != node.left.key + node.right.key:
  45.             return False
  46.         is_sum_tree2(node.right)
  47.         is_sum_tree2(node.left)
  48.     elif node.left is None and node.right is not None:    
  49.         return False
  50.     elif node.left is not None and node.right is None:
  51.         return False
  52.     else:
  53.         pass
Add Comment
Please, Sign In to add comment