将嵌套元组结构(即重组二项/二叉树)转换为
的快速方法是什么?t = (4, (3, 5, (2, 4, 6, (1, 3, 5, 7))))
到(有序)边的元组
((4,3), (4,5), # step 1 edges
(3,2), (3,4), (5,4), (5,6), # step 2 edges
(2,1), (2,3), (4,3), (4,5), (6,5), (6,7)) # step 3 edges
每个节点通向一对子节点,一个在父节点下面,一个在父节点上面。因此,4导致3和5; 3导致2和4;等等。
元组t
代表以下二叉树结构
答案 0 :(得分:1)
def g(t):
res = []
for i,x in enumerate(t[:-1]):
res.append((x, t[-1][i]))
res.append((x, t[-1][i+1]))
return res
def h(t):
if isinstance((t[-1]), tuple):
return g(t) + h(t[-1])
else:
return []
t = (4, (3, 5, (2, 4, 6, (1, 3, 5, 7))))
print h(t)