首页 > 编程语言 >数据结构与算法--二叉排序树

数据结构与算法--二叉排序树

时间:2024-08-17 11:26:00浏览次数:9  
标签:结点 排序 删除 -- 二叉 插入 查找 数据结构

文章目录

回顾

  • 查找算法:顺序查找、折半查找、索引查找。
  • 存储结构:顺序表、链表。
  • 优点:算法简单,查找效率高(折半查找)。
  • 缺点:查找效率低(顺序查找),需要额外存储空间(索引查找)。

提要

  • 定义二叉排序树。
  • 结点的插入与二叉排序树的创建。
  • 二叉排序树中进行查找。
  • 结点的删除:叶子、单分支、双分支结点。

1.二叉排序树的定义与特性

  • 定义:二叉排序树是一棵具有特定顺序性质的二叉树。
  • 特性
    1. 左子树上所有结点的关键字小于根结点的关键字。
    2. 右子树上所有结点的关键字大于根结点的关键字。
    3. 左、右子树本身也是二叉排序树。
  • 注意:没有相同关键字的结点。
  • 树表:以二叉树或树作为表的组织形式。
    • 树表是一类动态查找表,不仅适合于数据查找,也适合于表的插入和删除操作。
  • 常见的树表:
    • 二叉排序树
    • 平衡二叉树(AVL树)
    • B树、B+树
    • 红黑树
      在这里插入图片描述
      在这里插入图片描述

2.二叉排序树的构建与插入

  • 插入规则
    • 若二叉树为空,新结点作为根结点插入。
    • 若新结点小于根结点,插入到根的左子树上。
    • 若新结点大于根结点,插入到根的右子树上。
  • 二叉排序树的插入过程可看成是在有序序列中查找插入位置的过程。
  • 全部结点插入后,即无形中完成了排序过程。
  • 示例:通过关键字序列构建二叉排序树的过程。
  • 在这里插入图片描述
  • 二叉排序树结点插入的实现:
    在这里插入图片描述
  • 二叉排序树结点插入的递归算法:在这里插入图片描述

3.二叉排序树的查找

  • 查找过程:从根节点开始,根据关键字与当前节点的比较结果,决定是向左子树还是向右子树进行查找。
  • 查找算法:递归与非递归两种方式。
  • 在这里插入图片描述
  • 递归算法在这里插入图片描述
  • 示例:在这里插入图片描述

4.二叉排序树的删除

  • 删除情况
    1. 删除叶子结点:直接删除并置空父结点的相应指针。在这里插入图片描述

    2. 删除单分支结点:删除结点,将非空子树连接到父结点。在这里插入图片描述

    3. 删除双分支结点:用中序前驱或中序后继结点代替被删结点,然后删除该结点。在这里插入图片描述

    4. 在这里插入图片描述

5.二叉排序树的优点

  • (1)在二叉排序树中插入新结点时,新结点总是以叶子结点的形式被添加到树中。
  • (2)新结点的插入对已有结点的位置与树的原有形态没有影响。
  • (3)如果把二叉排序树看成一个有序序列,即相当于在一个有序序列中插入新元素,不会影响已有元素。
  • (4)对比:在进行折半查找的有序序列中,插入新元素会导致插入位置之后的所有元素向后移动。

小结

  • 创建二叉排序树的方法。
  • 查找结点的方法。
  • 二叉排序树中进行查找的优点。

标签:结点,排序,删除,--,二叉,插入,查找,数据结构
From: https://blog.csdn.net/wumingzei/article/details/141277712

相关文章

  • 【Python】入门到放弃之第八章《元组》
    上一篇:【Python】入门到放弃之第七章《列表》下一篇:【Python】入门到放弃之第九章《字典》文章目录前言一、定义二、创建1.基本创建2.转换创建三、访问元素四、不可变性五、应用场景总结前言这是本系列的第八章节内容,《元组》。一、定义元组(Tuple)是Python中的......
  • 发卡网哪个靠谱:挑选发卡平台的实用指南
    两头羊发卡平台是目前市场上较为知名的发卡解决方案之一。它因其高效的自动化功能、安全性和用户友好的界面受到了广泛好评。以下是对两头羊发卡平台的详细介绍,包括其核心功能、优势以及适用场景。1.核心功能1.1自动发卡两头羊平台支持自动发卡功能,可以根据预设的规则和条......
  • 单击键盘按键弹出窗口案例
    如题(记录学习过程)html文件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Documen......
  • 市域社会治理平台规划建设方案
    1.建设背景与市域治理定义市域社会治理作为国家治理体系的重要组成部分,具有承上启下的枢纽作用。2019年,全国市域社会治理现代化工作会议提出了推进市域社会治理现代化的总体思路,强调以城带乡、以点带面,明确了市域治理的方向。2.政治引领与治理现代化市域社会治理现代化以......
  • 靠谱的发卡平台推荐
    在数字时代,自动化发卡平台已经成为很多企业和个人必不可少的工具,特别是对于需要批量发卡的业务,如游戏充值、会员服务等。两头羊自动发卡平台作为市场上值得信赖的选择之一,凭借其出色的性能和用户友好的设计,赢得了众多用户的青睐。本文将详细介绍两头羊自动发卡平台的主要优势,并......
  • 数字孪生智慧工地解决方案
    1.行业背景与挑战建筑行业面临材料成本高、施工管理问题、环境污染、劳资纠纷和安全隐患等挑战。智慧工地的发展趋势需要集成统一管理、高效协同工作以及自动化和智能化。2.政策引导与新技术推动国家政策如《建筑业信息化发展纲要》和雄安新区管理办法强调了BIM和CIM技术......
  • springboot基于springboot的社区团购系统设计
    运行环境开发语言:java框架:springboot,vueJDK版本:JDK1.8数据库:mysql5.7+(推荐5.7,8.0也可以)数据库工具:Navicat11+开发软件:idea/eclipse(推荐idea)系统的实现用户功能模块的实现用户注册界面没有账号的用户可进入注册界面进行注册操作,用户注册界面的运行效果用户......
  • 福昕pdf编辑器个人版收费吗
    福昕高级PDF编辑器是一款功能强大的PDF文件编辑软件,提供多种实用的编辑功能。这里提供的版本不收费,且无限试用企业版的所有功能软件截图:使用说明:解压后,双击start_Foxit.bat来运行软件下载地址:FoxitPDFEditor-Pro-v13解压密码:helloh下载时可能会有广告,忽略,等下载结束......
  • MySQL数据库基础
    目录1.数据库的操作1.1  创建数据库1.2查看数据库1.3选中数据库1.4删除数据库2.常用数据类型2.1数值类型2.2字符串类型2.3日期类型3.表的操作3.1创建表3.2查看所有表3.3查看表的结构3.4删除表4.内容重点总结5.练习1.数据库的操作1.1  ......
  • 类和对象(中)
    目录1.类的默认成员函数2.构造函数 3.析构函数4.拷贝构造函数5.赋值运算符重载5.1 运算符重载5.2赋值运算符重载5.3日期类实现6.取地址运算符重载6.1const成员函数6.2取地址运算符重载1.类的默认成员函数默认函数就是用户没有显式实现,编译器会自......