简体   繁体   中英

List of all possible ways from root to leaf (without binary tree)

I'm trying to list all possible moves from the root to all of the leafs in a tree. I currently have it setup so I can get a list ['A', ['B', ['C'], ['K']], ['D', ['E', ['F'], ['G']], ['H', ['I'], ['J']]]]

Here is an image of what the list represents:

列表表示

I'm just wondering how I can transform the above list into: "ABK", "ABC", "ADEF", "ADEG", "ADHI", "ADHJ"

I've tried recursion through the list but I can't quite figure it out. Btw the only reason I'm trying to use the list is because thats the only real way I could think of and it doesn't seem to much of a strech from the list into the different pathways?

Here's a suggestion!

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]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM