我现在正在编写一个代码,该代码从一个密钥集(即 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 调用(例如,转换为迭代过程)之外,还有其他解决方案可以解决这个问题吗?它出现分段错误(核心转储)。