根据课程空间第六章数据抽象的内容,排序二叉树是比较容易进行检索的一种数据储存结构,例如下图是将英文字母按序储存在二叉树中。
请设计一个针对上述数据结构的搜索算法,完成在指定的二叉树中搜索指定值的工作。如果没有找到,则输出提示“搜索未成功”。请采用类Python的伪代码完成该搜索算法,可以采用递归算法,也可以采用循环算法。
class Node:
def __init__(self, val=None, left=None, right=None) -> None:
"""
:param val:
:param left:
:param right:
"""
self.val = val
self.left = left
self.right = right
class SearchTree:
def __init__(self) -> None:
self.root = Node()
def search(self, val) -> bool:
"""
:param val:
:return:
"""
if self.root.val is None:
self.root.val = val
print(f"没找到, 初始化二叉树root={val}成功!")
return False
else:
p = self.root
old = None
while p is not None:
if val == p.val:
print(f"找打{val}了")
return True
elif val > p.val:
old = p
p = p.right
else:
old = p
p = p.left
if val > old.val:
old.right = Node(val=val)
else:
old.left = Node(val=val)
print(f"没找到!添加节点{val}成功")
return False
if __name__ == '__main__':
tree = SearchTree()
arr = ['G', 'D', 'K', 'B', 'F', 'I', 'M', 'A', 'C', 'E', 'H', 'J', 'L']
for i in arr:
tree.search(i)
tree.search('O')
tree.search('P')
tree.search('K')