【发布时间】:2017-02-03 03:15:51
【问题描述】:
让我重写我的问题,以便更清楚。我在 LeetCode 问题上遇到了一个问题:验证二叉搜索树。
我的第一个解决方案如下所示:
class Solution(object):
def recursion(self, input, var_x, ans):
#update var_x
#update ans
self.recursion(input, var_x, ans)
def mySolution(self, input):
ans = []
var_x = 0
self.recursion(input, var_x, ans)
return ans
此解决方案未能通过测试。但是在我做了一个简单的改变之后,它就通过了:
class Solution(object):
def recursion(self, input, ans):
#update self.var_x
#update ans
self.recursion(input, ans)
def mySolution(self, input):
ans = []
self.var_x = 0
self.recursion(input, ans)
return ans
声明 var_x 和 self.var_x 有什么区别?我认为这两个在这个问题上的效果是一样的,但是一个通过测试另一个没有?
【问题讨论】:
-
请检查您的缩进。
-
令人惊讶的是它的效果更好,因为您仍然使用
prev = node(没有self.prev)。请提供(正确缩进)minimal reproducible example -
由于这是某种编码竞赛网站,我不想多说,但您可能误解了他们呈现数据的方式。看起来您正在获得一个压缩二叉树的数组表示,其中节点 N 的子节点编号为 2N 和 2N+1。相比之下,您似乎正在使用节点对象构建一棵实际的树,这可能是......矫枉过正。
-
感谢您的回复。该函数的输入是一个treeNode 对象Root。该网站提供了一个数组表示,以便您可以编写自己的测试用例。
标签: python recursion binary-search-tree inorder