学习二进制搜索树并尝试自己实现,现在设法使遍历方法正常工作,我想知道为什么此搜索方法不能正常工作,请您帮忙找出错误所在的范围内。似乎没有发现我可能在哪里出错
我还能在delete方法上获得帮助吗?我看不到错误可能在哪里,更糟的是,我没有收到错误消息以将我指向或输出
两种方法我都无法输出
以下代码
def search(self, val):
return self.__search(self.root, val) is not None
def __search(self, p, val):
if p is None:
return None
if val < p.info:
return self.__search(p.lchild, val)
elif val > p.info:
return self.__search(p.rchild, val)
else:
return p
tree = BinaryTree()
tree.insertion(59)
def delete(self, val):
self.root = self.__delete(self.root, val)
def __delete(self, p, val):
if p is None:
print(f"{val} Was not found")
elif val < p.info:
p.lchild = self.__delete(p.lchild, val)
elif val > p.info:
p.rchild = self.__delete(p.rchild, val)
else:
if p.lchild is not None and p.rchild is not None:
s = p.rchild
while s.lchild is not None:
s = s.lchild
p.info = s.info
p.rchild = self.__delete(p.rchild, s.info)
else:
if p.lchild is not None:
ch = p.lchild
else:
ch = p.rchild
p = ch
return p
tree = BinaryTree()
tree.insertion(59)
tree.insertion(45)
tree.insertion(72)
tree.insertion(75)
tree.insertion(69)
tree.insertion(50)
tree.delete(69)
tree.level_order()