Click
Here to go back to the homepage.
Tree Insertion Solution:
class Node:
def __init__(self, val):
self.l = None
self.r = None
self.val = val
self.childrenPlusSelf = 1
def add(self, val):
self.childrenPlusSelf += 1
if val < self.val:
if self.l == None:
self.l = Node(val)
else:
self.l.add(val)
else:
if self.r == None:
self.r = Node(val)
else:
self.r.add(val)
def factorial(n):
fact = 1
for i in range(1,n+1):
fact = fact * i
return fact
def simplify(m, n):
greater = m if m > n else n
sum = m + n
result = 1
while sum > greater:
result *= sum
sum -= 1
return result
def calculate(node):
m = node.l.childrenPlusSelf if node.l != None else 0
n = node.r.childrenPlusSelf if node.r != None else 0
lesser = m if m < n else n
result = simplify(m, n) // factorial(lesser)
if node.l != None:
result *= calculate(node.l)
if node.r != None:
result *= calculate(node.r)
return int(result)
i = int(input())
while(i != 0):
line = input()
vals = list(map(int, line.split(" ")))
root = Node(vals[0])
for j in range(1, len(vals)):
root.add(vals[j])
print(calculate(root))
i = int(input())