我现在正在编写一个代码,用于从URL列表中创建一个紧凑的trie。 然后我想将这个数据结构存储在递归的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调用(例如,转换为迭代过程)之外,还有其他解决方案可以解决这个问题吗?它出现了Segmentation fault(core dumped)。