递归函数的结果不正确

时间:2015-03-06 20:42:15

标签: python recursion tree

此函数返回正确的树深度数,但路径不正确。

all_paths = []
all_plen = []

def calc_path(case_list, curPath, d):

d_list = [cl for cl in case_list if (type(cl) == list)]     # Search in depth

if not d_list:                          # +1 path
    all_paths.append(curPath)
    all_plen.append(d)

for cl in d_list:
    cPath = curPath
    cPath.append(case_list.index(cl))
    calc_path(cl, cPath, d + 1)

def main():
    c_list = [('A0', 4), ('B0', 5), ('C0', None), 
                                   [('A1', 1), ('B1', None), 
                                              [('A2', 13), ('B2', 32)], 
                                    ('C1', 15)
                                   ], 
          ('D0', 23), ('E0', None), [('A11', 7)]]
    calc_path(c_list, [], 0)
    print all_plen
    print all_paths

if __name__=='__main__':
    main()

如何返回避免全局变量的路径?

更新。

我正在尝试在树中获取所有路径。 我一直试图将'all_paths'作为函数的参数传递,但我的结果不正确。

“c_list”包含一个带有第二个“None”的元组,后跟一个下一个嵌套级别列表。

P.S。对不起,过时的浏览器破坏了我的代码缩进。固定的。

0 个答案:

没有答案