blob: 84dd53084623c04456db6c9089368ab3f9a068ee (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def build_tree (x):
if (x == ()): return ()
if (len (x) == 1): return (x[0],)
else: return (x[0], build_tree (x[1:]))
def merge (a, b):
if a == (): return build_tree (b)
if b == (): return a
if b[0] == a[0]:
if len (a) > 1 and isinstance (a[1], type (())):
return (a[0],) + (merge (a[1], b[1:]),) + a[2:]
elif b[1:] == (): return a
else: return (a[0],) + (build_tree (b[1:]),) + a[1:]
else:
return (a[0],) + merge (a[1:], b)
|