热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

【MOOC】二叉搜索树

解决动态查找问题目录一、二叉搜索树二、查找Find()三、插入Insert()四、删除delete()五、课后习题一、二叉搜索树二、查找Find()都是尾递归,

 解决动态查找问题

目录

一、二叉搜索树 

二、查找Find()

 三、插入Insert()

四、删除delete()

五、课后习题





一、二叉搜索树 

 

二、查找Find()

 

 

 都是尾递归,效率不高

 //平衡二叉树

 三、插入Insert()

 //原树为空,返回修改后的下个BST;原树不为空,返回未修改的下个BST。

四、删除delete()

 

左子树的最大值或者右子树的最小值一定不是有两个儿子的结点,

且替代其也不会破坏二叉搜索树的结构(可以替代根结点)。

 

1.找到右子树最小Tmp,填进要删除的结点

2.在右子树中递归删除右子树最小

(    递归找到要删除的结点【最后一个if】【if、else if、else if】,

        删除该结点【最后一个else】)


 【最后一个else】:

Tmp=要删除的结点地址BST

BST=左孩子地址、右孩子地址、NULL【相当于其父结点指向左孩子、右孩子或NULL】

free(Tmp):释放要删除结点(Tmp仍为其地址)


五、课后习题


树只有一种可能

 

243765

 

若为完全二叉树,则只可能在最后一行【有左子树没有右子树】,或者【左右子树都有】,

不可能【有右子树没有左子树】。

因此最小结点一定是叶节点,最大结点则可以是【有左子树没有右子树】的结点。


推荐阅读
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 查找最小值的操作是很简单的,只需要从根节点递归的遍历到左子树节点即可。当遍历到节点的左孩子为NULL时,则这个节点就是树的最小值。上面的树中,从根节点20开始,递归遍历左子 ... [详细]
  • 本文详细介绍了 RosPack 类的功能和用法,探讨了其在 ROS 系统中的重要作用。RosPack 类提供了类似于终端命令 rospack 的功能,能够方便地查询和管理 ROS 包的相关信息。 ... [详细]
  • 本文详细介绍了C++中map容器的多种删除和交换操作,包括clear、erase、swap、extract和merge方法,并提供了完整的代码示例。 ... [详细]
  • 本文详细介绍了 VI 编辑器中常用的跳转和加密功能。通过这些命令,用户可以快速定位到文件的特定位置,并对文件进行安全保护。 ... [详细]
  • MySQL InnoDB Double Write机制详解
    本文深入探讨了MySQL InnoDB存储引擎的Double Write技术,该技术通过在内存和磁盘上创建数据页的副本,确保了部分写失效(Partial Page Write)情况下的数据完整性和可靠性。同时,文章介绍了InnoDB以页为单位进行读取和更新的机制,并详细解析了Double Write的工作原理。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文详细介绍了JSP的三大指令:page、include和taglib,重点探讨了静态包含与动态包含的区别及其应用场景,并解释了如何使用taglib指令引入第三方标签库。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • 1.介绍有时候我们需要一些模拟数据来进行测试,今天简单记录下如何用存储过程生成一些随机数据。2.建表我们新建一张学生表和教师表如下:CREATETABLEstudent(idINT ... [详细]
  • #print(34or4 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
author-avatar
丁扣其
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有