Construct Binary Tree from Inorder and Postorder Traversal @ LeetCode (Python)
kitt
posted @ 2014年4月14日 14:02
in LeetCode
, 4178 阅读
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # @param inorder, a list of integers # @param postorder, a list of integers # @return a tree node def buildTree(self, inorder, postorder): if not inorder: return None # inorder is empty self.inorder, self.postorder = inorder, postorder return self.dfs(0, 0, len(inorder)) def dfs(self, inLeft, postLeft, Len): if Len <= 0: return None root = TreeNode(self.postorder[postLeft + Len - 1]) rootPos = self.inorder.index(self.postorder[postLeft + Len - 1]) root.left = self.dfs(inLeft, postLeft, rootPos - inLeft) root.right = self.dfs(rootPos + 1, postLeft + rootPos - inLeft, Len - 1 - (rootPos - inLeft)) return root
2015年3月17日 09:46
这个代码提交了提示Memory Limit Exceeded,我写的代码也是这个错误,你提交成功了么?
2015年3月19日 01:49
之前提交成功了,现在也是Memory Limit Exceeded, 看来要求更严格了啊@lhq:
2015年3月19日 04:52
我后来改好了,列表切片是产生新的列表,以前的列表没有释放,所以会造成内存溢出,只要建一个类变量,然后递归列表的区间位置变量就行了@kitt:
2015年3月20日 02:37
我觉得用实例变量更好吧,上面代码已更新了,你瞅一下~@lhq:
2015年3月20日 03:05
恩,看到了。我最近也在用python刷leetcode,遇到大神的博客,感觉收获不少呀。
2015年3月20日 19:34
我可不算,大家多交流呗~ 不过我真心觉得Python很简洁 @lhq: