二叉排序树

1.定义 

        二叉排序树(BinarySortTree)定义如下:

二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;

由定义可知二叉排序树左子树结点值小于它的根节点值,右子树的值大于它的根节点值。


如图所示。

2.实现

        二叉排序树有3个操作,分别是插入,删除,查找。

        查找:

        步骤:

   首先查找头结点,如果等于要查找的值,则成功找到,返回,如果它的值大于查找的值,递归调用左子树,如果小于查找的值,递归调用右子树。

实现:

首先定义一个二叉树的类:

#二叉链表实现二叉树
class Tree:
    __value=None
    __lChild=None
    __rChild=None
    def __init__(self,value=None):
        self.__value=value
    def get_lChild(self):
        return self.__lChild
    def set_lChild(self,lChild):
        self.__lChild=lChild
    def get_rChild(self):
        return self.__rChild
    def set_rChild(self,rChild):
        self.__rChild=rChild
    def get_value(self):
        return self.__value
    def set_value(self,value):
        self.__value=value

查找方法:

  #查找操作     树的头结点  要查找的键
    def select(self,head,key):
        node=head
        flag=False
        n1=node
        #print(node==head)
        #print(node==None)
        while True:
           if node == None:
               node=n1
               break
           elif node.get_value() == key:
               #print(node.get_value(), key)
               flag=True
               break

           elif key > node.get_value(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值