gpt4 book ai didi

python - 使用 __iter__ 读取二叉树

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:01 24 4
gpt4 key购买 nike

我有一个标准的二叉树,如下所示
1
/\
2 3
/\/\
4 5 6 7

我需要通过导入我的树类来读取二叉树,创建这棵树,然后使用 for 循环读取它,如:[4, 2, 5, 1, 6, 3, 7]

我已经制作了这棵树,我的程序将生成一棵包含任意数量数字的类似树。我的问题出在方法上。

def iter( self ):

到目前为止我有:

def __iter__(self):
if self.left:
self.left.__iter__()
yield self
if self.right:
self.right.__iter__()

但是当我在树对象上运行 for 循环时:

对于树中的项目: print("{}: {}").format(item.name, item.height())

它仅以正确的高度打印我尝试中的第一个节点。

我的问题基本上是,如何使用递归打印此二叉树?

最佳答案

在 Python 中 >= 3.3 ,可以对递归迭代器使用 yield from x 语法:

def __iter__(self):
if self.left:
yield from self.left
yield self
if self.right:
yield from self.right

编辑:确认支持 Python 3.3。

关于python - 使用 __iter__ 读取二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com