Milano
Milano

Reputation: 18745

Python: Recursive function for browsing all tree nodes

I'm trying to make an recursive function which finds all nodes in a tree. My function, let's name it child(), can find all children of the current node and returns a list´of them.

global nodes
nodes = []

def func():
    if len(child(c))==0:
        return []
    else:
        for ch in child(c):
            nodes.append(ch)
            return func(ch)

It seems it does not work for some reason.

Do you have an idea whats wrong or the problem should be somewhere else in my code?

EDIT: The problem is probably

if len(child(c))==0: return [] it should check another child instead of return []. But don't know what to put there.

Upvotes: 0

Views: 1879

Answers (1)

huxley
huxley

Reputation: 307

it's because of the return statement inside the for, the function passed only on the first child in the list.

this should work

global nodes
nodes = []

def func(c):
    for ch in child(c):
        nodes.append(ch)
        func(ch)

Upvotes: 1

Related Questions