二叉搜索树的创建

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

 

以上是关于二叉搜索树的创建的主要内容,如果未能解决你的问题,请参考以下文章

二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串

二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串

二叉树进阶题------二叉树的构建及遍历;二叉搜索树转换成排序双向链表;二叉树创建字符串

11.二叉搜索树的创建和查找(JavaScript版)

二叉搜索树的理解以及AVL树的模拟实现

二叉搜索树的理解以及AVL树的模拟实现