二叉搜索树的创建
Posted dushangguzhousuoli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜索树的创建相关的知识,希望对你有一定的参考价值。
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))
以上是关于二叉搜索树的创建的主要内容,如果未能解决你的问题,请参考以下文章
二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串
二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串