【发布时间】:2021-02-19 14:28:16
【问题描述】:
我有两个类,Node() 和 binarySearchTree()。 Node() 具有以下属性:
self.left= None
self.right= None
self.key= key
self.data = data
并且 binarySearchTree() 具有用于插入、搜索和打印二叉搜索树 (BST) 的方法。我还必须为我的 BST 包含一个 __contains__ 方法,这使我能够编写如下内容:
tree= Bintree()
tree.store("table")
if "table" in tree: <--
do something <--
它抱怨最后两个“__contains__”没有定义。但我希望它以递归方式工作。但它不起作用。
def __contains__(self, key):
if self.root == None:
return False
elif key== self.root.key:
return True
elif key < self.root.key:
return __contains__(self.root.key.left,key)
elif key > self.root.key:
return __contains__(self.root.key.right,key)
【问题讨论】:
-
方法名前需要
self.。 -
或者直接使用
in而不是直接调用__contains__:key in self.root.left。 -
self.root到底是什么? 它 有left和right属性,还是self本身有这些属性?
标签: python binary-search-tree contains