码迷,mamicode.com
首页 > 其他好文 > 详细

二叉搜索树的创建

时间:2019-07-09 19:23:35      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:nbsp   insert   btree   class   bre   对比   root   排序   ret   

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))

 

二叉搜索树的创建

标签:nbsp   insert   btree   class   bre   对比   root   排序   ret   

原文地址:https://www.cnblogs.com/dushangguzhousuoli/p/11159306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!