我遇到了BST问题;我写了一个代表BST的类,但我无法返回True
或False
是否有一个数字在BST中。知道它为什么总是返回None
?当我询问根时,它只给出了正确的答案。
class DrzewoBST:
def __init__(self, value = None):
self.val = value
self.left = None
self.right = None
def __str__(self):
return "[%s, %s, %s]" % (self.left, str(self.val), self.right)
def wstawianie(self, wartosc):
if self is None:
self = DrzewoBST(wartosc)
if wartosc < self.val:
if self.left is None:
self.left = DrzewoBST(wartosc)
else:
self.left.wstawianie(wartosc)
elif wartosc > self.val:
if self.right is None:
self.right = DrzewoBST(wartosc)
else:
self.right.wstawianie(wartosc)
def wyszukiwanie(self, liczba):
print(self.val)
if self is None:
return False
if int(self.val) == liczba:
return True
if liczba < self.val:
self.left.wyszukiwanie(liczba)
else:
self.right.wyszukiwanie(liczba)
t = DrzewoBST(2)
t.wstawianie(3)
t.wstawianie(3)
print(t.wyszukiwanie(3))
只有当我尝试t.wyszukiwanie(2)
(这会给我True
)时才有效,但当我尝试t.wyszukiwanie(3)
时,我得到False
;我应该得到True
,因为3是在BST。
答案 0 :(得分:1)
因为wyszukiwanie
没有返回任何内容。添加return
声明。
if liczba < self.val:
return self.left.wyszukiwanie(liczba)
else:
return self.right.wyszukiwanie(liczba)