从python中的紧凑trie构建trie的递归表示

时间:2013-10-28 00:04:53

标签: python trie

我现在正在编写一个代码,用于从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)。

0 个答案:

没有答案