python - 如何在 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))
解决方案
由于我不知道您的树或 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))
推荐阅读
- java - 使用比较器时相同类型的不兼容类型错误
- go - 如何在 Golang 中使用 gofpdi.importPage() 导入下载的空白 pdf 文件?
- python - 标准化不规则形状的数据(TypeError:只有 size-1 的数组可以转换为 Python 标量)
- python - 如何在熊猫系列中获得最接近零的 n 个值?
- node.js - Mongoose 删除带有 id 的双重嵌套对象
- laravel - 如何从关系中删除项目
- spring - 如何更新spring mongodb中的嵌入对象
- css - Vuetify:自定义样式中断分页
- django - 如何在 django 中永久更改主文件夹名称
- python - 使用 pathlib 模块关闭文件的推荐方法?