|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- # Definition for a binary tree node.
- # class TreeNode:
- # def __init__(self, x):
- # self.val = x
- # self.left = None
- # self.right = None
- class Solution:
- def __init__(self):
- self.pre = []
- self.mid = []
- def bt(self, b1, e1, b2, e2):
- #b1,e1前序的始末下标;b2,e2中序的始末下标
- if b1 > e1:
- return None
- #if b1 == e1:
- #return TreeNode(self.pre[b1])
- midloc = -1
- root = TreeNode(self.pre[b1])
- midloc = self.mid.index(self.pre[b1])
- if midloc == -1:
- return None
- c = midloc - b1 #左子树的长度
- #pre: b1、[b1+1:b1+c]、[b1+c+1:e1]
- #mid: [b2:b2+c-1]、b2+c、[b2+c+1:e2]
- root.left = self.bt(b1+1, b1+c, b2, b2+c-1)
- root.right = self.bt(b1+c+1, e1, b2+c+1, e2)
- return root
-
-
- def buildTree(self, preorder, inorder):
- """
- :type preorder: List[int]
- :type inorder: List[int]
- :rtype: TreeNode
- """
- self.pre = preorder #这个变量不能被bt函数访问到吗
- self.mid = inorder
- return self.bt(0, len(self.pre)-1, 0, len(self.mid)-1)
-
-
复制代码
如上述代码所示,有前序遍历和中序遍历生成树的结构
错误如下:Line 19: RecursionError: maximum recursion depth exceeded
这是哪里出了问题? |
|