首页 > 解决方案 > 如何在 Python3 中使用递归输出

问题描述

我正在使用递归来遍历二叉树以获取最后的所有节点。这很好,问题是,根据我的树的高度,我在元组内部的元组中得到元组。我如何处理这样的输出?

def minimax(tree):
    l = minimax_rec(tree.root)


    print(len(l))

def minimax_rec(curr):
    if curr.is_terminal():
        return curr.val
    else:
        if curr.val == -1:
            return minimax_rec(curr.left),minimax_rec(curr.mid),minimax_rec(curr.right)
        else:
            return curr.val, minimax_rec(curr.left),minimax_rec(curr.mid),minimax_rec(curr.right)

如果树的高度是 3,我会得到这样的结果:

(((9, 37, 5), (17, 8, 32), (29, 31, 25)), ((14, 7, 32), (2, 25, 28), (39, 1, 29)), ((18, 15, 38), (7, 21, 2), (2, 2, 35)))

随着树的高度增加,输出也会增加,并且存在大量嵌套元组。有没有办法只获取包含这样的值的元组?

((9, 37, 5), (17, 8, 32), (29, 31, 25), (14, 7, 32), (2, 25, 28), (39, 1, 29), (18, 15, 38), (7, 21, 2), (2, 2, 35)) 

标签: pythonpython-3.xrecursiontuples

解决方案


由于我不知道您的树或 curr 是什么样的,因此代码可能看起来有点愚蠢

def minimax(tree):
    def minimax_rec(curr):
        if curr.is_terminal():
            return curr.val
        else:
            if curr.val == -1:
                result = minimax_rec(curr.left),minimax_rec(curr.mid),minimax_rec(curr.right)
                if isinstance(result[0], int):
                    result_list.append(result)
                return result
            else:
                return curr.val,minimax_rec(curr.left),minimax_rec(curr.mid),minimax_rec(curr.right)
    result_list = []
    l = minimax_rec(tree.root)
    print(result_list)
    print(len(l))

推荐阅读