class Btreenode: #创建树 def __init__(self,data): self.data=data self.lchild=None self.rchild=None class BTS: def __init__(self,li): self.root=None for i in li: self.insert(i) def insert(self,key): #书中插入一个值 if not self.root: self.root=Btreenode(key) #没有根节点,先创建一个根节点 else: p=self.root #得到根节点 while p: if key<p.data: #如果插入的值小于根节点,写入左孩子 if p.lchild: #如果根节点有左孩子,继续向下查找 p=p.lchild else: p.lchild=Btreenode(key) #如果没由左孩子,创建左孩子 break elif key>p.data:#如果插入的值大于根节点,写入右孩子 if p.rchild: p=p.rchild #如果根节点有右孩子,继续向下查找 else: p.rchild=Btreenode(key) #如果没由右孩子,创建右孩子 break else: break def query(self,key): p=self.root while p: if key<p.data:#查找值跟根节点对比,小于根节点向左孩子查找 p=p.lchild elif key>p.data:#查找值跟根节点对比,大于根节点向右孩子查找 p=p.rchild else: return True return False def travese(self): def in_order(root):#二叉搜索树采用中序排序,结果是一个升序的排序结果 if root: in_order(root.lchild) print(root.data,end=‘‘) in_order(root.rchild) in_order(self.root) tree=BTS([4,5,6,7,1,2,8,9]) tree.travese() print(tree.query(5))
原文地址:https://www.cnblogs.com/dushangguzhousuoli/p/11159306.html
时间: 2024-10-10 17:31:56