zoukankan      html  css  js  c++  java
  • 数据结构与算法-二叉排序树

    前言

    查找和排序是算法中最基础的两类算法,其或多或少会被应用在其他高阶算法中。每一种算法都可以有多种数据结构作为支撑,比如查找,可以是对于无序顺序表的查找,查找时只能顺序遍历了;可以是有序顺序表的查找,可以进行二分查找;还可以是即将要介绍的二叉排序树的查找,其查找逻辑类似于二分查找,在插入元素时又不需要大量的移动操作。

    定义

    二叉排序树又叫做二叉查找树,在数的内部维护着一种秩序,即任何子树的左子树都小于该子树的树根,右子树都大于该子树的树根,这样在查找逻辑就会类似二分查找,这种秩序是在插入元素时得到维持的。

    由于二叉排序树的特性,其再求最值、Floor、Ceiling时也是有规律的。

    最大最小值

    Floor和Ceiling

    查找Floor(key)的值就是所有<=key的最大值,相反查找Ceiling的值就是所有>=key的最小值,下图是Floor函数的查找示意图:

    删除

     缺陷

    二叉排序树在搜索逻辑上类似二分查找,实现也比较简单,但与二分查找一样,极端情况下可能会编程顺序查找(如下图的worst case),也正是因为这种缺陷,排序二叉树很少应用于工程,所以才会出现平衡二叉树。

  • 相关阅读:
    8.用户注销
    7.用户登陆,用户退出,记住用户名和密码
    6.后台验证码-session作用域
    5.验证用户名是否已经被注册:AJAXC请求
    4.前端注册表单验证 && 表单回填
    3.注册后台处理逻辑编写
    HTTP Status 500
    jquery之stop()的用法
    angular.forEach
    jquery如何获取第一个或最后一个子元素?
  • 原文地址:https://www.cnblogs.com/holoyong/p/7243959.html
Copyright © 2011-2022 走看看