0

我现在正在编写一个代码,该代码从一个密钥集(即 URL 列表)构建一个紧凑的 trie。然后我想把这个数据结构存储在一个递归特里树表示中,如下所示:

T = |L| A B
|L| is the number of leaves of a left subtrie
A is a left subtrie
B is a right subtrie

这是我的python代码部分。

def leftLeaves(self, node):
          if node.isLeaf():
              return 1
          else:
              return self.leftLeaves(node.left) + self.leftLeaves(node.right)

def toBitStream(self, node):
      if node.isLeaf():
          return [node.path.length(), node.path, -1]
      else:
          L = node.left
          R = node.right
          leftLeaves = self.leftLeaves(L)
         return [node.path.length(), node.path, leftLeaves] + self.toBitStream(L) + self.toBitStream(R)

当我运行这个脚本时,我遇到

RuntimeError: 超出最大递归深度。

但是我输入小尺寸的键集,没关系。

我知道运行时错误是由于python限制了递归调用的深度以避免堆栈溢出。

除了使用 sys.setrecursionlimit 调用(例如,转换为迭代过程)之外,还有其他解决方案可以解决这个问题吗?它出现分段错误(核心转储)。

4

0 回答 0