从嵌套元组到二叉树的边缘,在 Python
From nested tuples to edges of a binomial tree, in Python
将嵌套元组结构(即重组 binomial/binary 树)转换为
的快速方法是什么
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
表示如下二叉树结构
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)
将嵌套元组结构(即重组 binomial/binary 树)转换为
的快速方法是什么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
表示如下二叉树结构
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)