class BiNode:
def __init__(self, key=None, lchild=None, rchild=None):
self.key = key
self.lchild = lchild
self.rchild = rchild
class BiSortTree:
def __init__(self, n):
self.root = None
self.n = n
self.total_deep = 0
def create_bst(self, seq: list):
for i in range(self.n):
s = BiNode(key=int(seq[i]))
self.root = self.insert(self.root, s)
def insert(self, r: BiNode, s: BiNode, deep=1) -> BiNode:
if r:
if s.key < r.key:
deep += 1
r.lchild = self.insert(r.lchild, s, deep)
else:
deep += 1
r.rchild = self.insert(r.rchild, s, deep)
else:
self.total_deep = self.total_deep+deep
return s
return r
def search(self, r: BiNode, k: int):
if r:
if r.key == k:
return "查找成功", round(self.total_deep/self.n, 3)
elif k < r.key:
return self.search(r.lchild, k)
else:
return self.search(r.rchild, k)
else:
return "查找失败", 0
def search_team():
numbers = list(management.keys())
a = BiSortTree(len(numbers))
a.create_bst(numbers)
num = entry1.get()
if num:
result, asl = a.search(a.root, int(num))
if result == "查找成功":
entry2.insert(0, management[num].work)
entry3.insert(0, management[num].school)
entry4.insert(0, management[num].category)
entry5.insert(0, management[num].competitor)
entry6.insert(0, management[num].teacher)
messagebox.showinfo(title="查询结果", message="查找成功,ASL=" + str(asl))
else:
messagebox.showerror(title="错误", message="查找失败")
else:
messagebox.showerror("提示","输入不能为空!")
课设——基于二叉排序树的查找
最新推荐文章于 2024-10-18 00:00:00 发布