擅长:python、mysql、java
<p>如果有单独的树和节点类型,则需要两个函数,一个通过节点递归,另一个只是为了让事情继续进行</p>
<p>大概是这样的:</p>
<pre><code>def __contains__(self, key):
returns self.node_contains(self.root, key)
def node_contains(self, node, key):
if node == None:
return False
elif key == node.key:
return True
elif key < node.key:
return self.node_contains(node.left, key)
elif key > node.key:
return self.node_contains(node.right, key)
</code></pre>
<p>或者,您可以将工作划分为两个类,如下所示</p>
<p>在树类中:</p>
<pre><code>def __contains__(self, key):
return self.root and key in self.root
</code></pre>
<p>在节点类中:</p>
<pre><code>def __contains__(self, key):
return self.key == key
or (key < self.key and self.left and key in self.left)
or (self.right and key in self.right)
</code></pre>