如何将init内部声明的变量作为默认参数传递给python中的类方法



我试图通过声明一个BST类来对二叉搜索树执行递归搜索操作。我已经将根值初始化为none(如下所示)。

class BST:  
def __init__(self):
self._root = None

def search_recursive(self, troot, key):
if troot:
if key == troot._element:
return True
elif key < troot._element:
return self.search_recursive(troot._left, key)
elif key > troot._element:
return self.search_recursive(troot._right, key)
else:
return False

我要做的是,传递这个根作为递归搜索函数的默认参数。因此,当它第一次被调用时,根值将是根,它将被更新为在以后的函数调用中传递的任何值。像这样

def search_recursive(self, troot = self._root, key)

我可以创建一个驱动函数并将root作为参数传递(如下所示)并使其工作,但是我们可以像我上面所说的那样做吗?

def search_driver(self, key):
self.search_recursive(self._root, key)

编写一个初始调用递归函数的非递归函数是标准的方法。

但是,在这个特定的情况下,您可以完全省略troot参数,因为您已经可以通过self访问它。

class BST:    
def __init__(self):
self._root = None

def search_recursive(self, key):
if self._root:
if key == self._root._element:
return True
elif (key < self._root._element) and (self._root._left is not None):
return self._root._left.search_recursive(key)
elif (key > self._root._element) and (self._root._right is not None):
return self._root._right.search_recursive(key)
else:
return False

你可以把这段代码写得更优雅一点,但我想尽可能地模仿你的结构。

最新更新