从根到叶的所有可能方式的列表(没有二叉树)

时间:2015-03-28 22:36:12

标签: python algorithm tree

我正在尝试列出从根到树中所有叶子的所有可能移动。我目前有设置,所以我可以得到一个列表 ['A',['B',['C'],['K']],['D',['E',['F'],['G']],['H' ,['我',['J']]]]

这是列表代表的图像:

list representation

我只是想知道如何将上面的列表转换为: “ABK”,“ABC”,“ADEF”,“ADEG”,“ADHI”,“ADHJ”

我已尝试通过列表进行递归,但我无法弄明白。顺便说一句,我试图使用该列表的唯一原因是因为这是我能想到的唯一真正的方式,并且从列表到不同的路径似乎并没有太大的影响?

1 个答案:

答案 0 :(得分:1)

这是一个建议!

def walktree(lst):
    # Is it a leaf?  Here's our base case.
    if len(lst) == 1:
        return lst

    # If not, then it's a node; just make sure the list is formatted correctly.
    assert(len(lst) == 3)

    first = lst[0]

    # Here's where the recursion happens. 
    left = walktree(lst[1])
    right = walktree(lst[2])

    # Finally, the combination step. 
    return [first + x for x in left + right]