Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SumTree:
- def __init__(self):
- self.root = None
- class Node:
- def __init__(self):
- self.key = 0
- self.left = None
- self.right = None
- def makeNode(key):
- n = Node()
- n.key = key
- return n
- def build_sum_tree(array):
- return build_sum_tree2(array, 0, len(array))
- def build_sum_tree2(array, startpos, length):
- if length < 1:
- return None
- if length == 1:
- return makeNode(array[startpos])
- halflen = length/2
- l = build_sum_tree2(array, startpos, halflen)
- r = build_sum_tree2(array, startpos+halflen, length-halflen)
- n = makeNode(l.key + r.key)
- n.left = l
- n.right = r
- return n
- def is_sum_tree(tree):
- return is_sum_tree2(tree.root)
- def is_sum_tree2(root):
- n = makeNode(root.key)
- if n.left is None or n.right is None:
- pass
- else:
- if n.key != n.right + l.right:
- return False
- else:
- is_sum_tree2(n.right)
- is_sum_tree2(n.left)
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement