python - 如何从每个递归调用中获取值并放入单个列表中?
问题描述
给定一个树结构:
class Node:
def __init__(self, data, left=None, right=None):
self.left = left
self.right = right
self.data = data
我希望能够获取递归调用的结果(self.data)
def preOrder(self):
if self:
print(self.data)
if self.left is not None:
self.left.preOrder()
if self.right is not None:
self.right.preOrder()
并能够在一个列表中返回它们。
在哪里
root= Node(2,Node(1,Node(6),Node(3)),Node(3,None,Node(9)))
root.preOrder()
将产生 [2,1,6,3,3,9]。
我尝试过使用辅助功能,但我被卡住了,无法获得有效的解决方案。
解决方案
class Node:
def __init__(self, data, left=None, right=None):
self.left = left
self.right = right
self.data = data
def preOrder(self, result = None):
if result is None:
result = []
if self:
result.append(self.data)
if self.left is not None:
self.left.preOrder(result)
if self.right is not None:
self.right.preOrder(result)
print(result)
return result
root= Node(2,Node(1,Node(6),Node(3)),Node(3,None,Node(9)))
root.preOrder()
而不是打印附加到列表并将该列表再次发送到相同的函数。继续附加它并在最后返回。
推荐阅读
- sql - 根据 PostgreSQL 中的多个条件和交集更新多个列
- docker - 在 Gitlab CI/CD 中运行 Docker 容器的问题
- python - 我不知道 tkinter 的 after 方法是如何工作的
- css - 不透明度:0 + 指针事件:无 vs 显示:无
- cordova - 使用 Cordova In app Browser 从视频播放器下载文件
- reactjs - 标签
在此浏览器中无法识别。如果您打算渲染一个 React 组件,请以大写字母开头 - java - 如何覆盖这段代码的 100% 分支?
- python - 我们可以使用 VODE 使用 scipy.integrate.ode 修改集成步骤之间的解向量吗?
- python - 使用python的Qgis插件构建器
- linux - linux不能用分号设置环境变量