2014-04-15 12 views
0

我想遍历一个堆,并将遍历写入一个文件,但是我失败了。在python3.x中遍历一个文件问题

我一直在收到一个问题,即当我想要的所有节点都打印在文件中时,我的终端发送垃圾邮件的最大遍历深度。

+0

为什么不把文件'j'的参数,而不是保持'open'ing呢?另外,你的支票应该是'不是无'。 – jonrsharpe

+0

@jonrsharpe编辑我的代码 - 他们应该是不同的文件,每个遍历 – somebody

+0

这不是我的意思;你重新打开每个递归,只需在外面打开一次,并将文件对象作为参数传递。 – jonrsharpe

回答

1

我觉得你的代码应该看起来更像是这样的:

def inorder(self, file):  
    if self._left is not None: 
     file.write(str(self) + ' ') 
     self._left.inorder(file) 
    file.write(str(self) + ' ') 
    if self._right is not None: 
     file.write(str(self) + ' ') 
     self._right.inorder(file) 

需要注意的是:

  1. file写一种说法,传递给递归调用,而不是open ED每次;
  2. 通过身份不平等测试None;和
  3. 我假设你有一个树结构,其中self._leftself._right是与self相同的类的实例(因为你已经提供了很少的类,很难确定,但self.inorder(self._left)没有意义)。

当你调用该方法,在你的类的某些情况下instance,它看起来像:

with open(...) as f: 
    instance.inorder(f)