pavan8085
BAN USERA simple Python implementation using dictionaries.
class Node:
def __init__(self,data,level, left=None, right=None):
self.data = data
self.level = level # decrement level by -1 if you go left, add +1 if you go right
self.left = left
self.right = right
""" Construct a binary tree (not a BST) recursively """
def create_tree(root, data, level, index, dic):
if root is None:
root = Node(data[index], level)
if level in dic:
dic[level].append(data[index])
else:
dic[level] = [data[index]]
if index * 2 + 1 < len(data):
root.left = create_tree(root.left, data, level-1, index*2 + 1, dic)
if index * 2 + 2 < len(data):
root.right = create_tree(root.right, data, level+1, index*2 + 2, dic)
return root
if __name__ == "__main__":
a = [1,2,3,4,5,6,7]
root = None
dic = {}
root = create_tree(root, a, 0, 0, dic)
for key, val in sorted(dic.iteritems()):
print val
A simple solution in Python
a = [[1, 3, 5, 1, 8 ],
[8, 3, 5, 3, 7 ],
[6, 3, 9, 6, 0 ]]
row = len(a)
col = len(a[0])
b = [[sum(a[j][:i+1]) for i in range(col) ] for j in range(row)]
x = (0,2)
y = (2,4)
add = 0
for val in range(x[0],y[0]+1):
add += b[val][y[1]] - b[val][x[1]-1]
print add
This will crash if 's' is NULL
- pavan8085 January 18, 2015