1、查找二叉树的定义

先上图:

一棵二叉搜索树(Binary Sort Tree)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据值和指向孩子(也可能是父母)的指针。如果某个孩子结点不存在,其指针为空(NULL)。

  • 查找树的左右子树各是一棵查找树
  • 若查找树的左子树非空,则其左子树上的各节点值均小于根节点的值。
  • 若查找树的右子树非空,则其右子树上的各节点值均大于根节点的值。

2、查找树的基本操作

  • 查找
  • 插入节点
  • 删除节点

2.1 查找

二叉搜索树很多时候用来进行数据查找。这个过程从树的根结点开始,沿着一条简单路径一直向下,直到找到数据或者无法找到返回NULL值。从图中可以看出,在查找二叉树中查找很容易,比大小就可以,小就向左找,大就向右找。
例如说,查找12。
步骤:

  • 12<16,向左找,与9去比较
  • 12>9,向右找,与12去比较
  • 12=12,找到了

2.2 插入

在查找树中插入一个节点需要分情况:

  • 如果相同键值的节点已经存在,则不再插入
  • 如果查找树为空,则已新节点为查找树
  • 将要插入节点的键值与插入后的父节点的键值比较,就能确定新节点是父节点的左子节点,还是右子节点。

2.3 删除

在查找树中删除一个节点需要分情况:

  • 若待删除的节点是叶子节点,则直接删除该节点
  • 若待删除的节点只有一个子节点,则将待删除节点父节点与其子节点直接相连,然后删除该节点
  • 若待删除的节点有两个子节点,则在其左子树上,用中序遍历寻找值最大节点s,用节点s的值代替该节点的值,然后删除节点s,且节点s必属上述两种情况之一

例题1:

利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素30要进行__次元素间的比较
A. 4
B.  5
C.  6
D.  7

插入是指把每个节点都看成查找树,因此可以画出:

例题2:

在常用的描述二叉排序树的存储结构中,关键字值最大的节点__
A. 左指针一定为空
B. 右指针一定为空
C. 左、右指针均为空
D. 左右指针均不为空

查找二叉树(BST)相关推荐

  1. C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划

    C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...

  2. 【算法与数据结构】查找二叉树的实现

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.题目介绍     二叉树是一种基本的数据结构.查找二叉树是一种方便与查找,删除,插入等功能的二叉树,它要求每 ...

  3. 查找二叉树(信息学奥赛一本通-T1367)

    [题目描述] 已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点.例:如图二叉树的数据文件的数据格式如下: [输入] 第一行n为二叉树的结点个树,n≤100:第二行x表示 ...

  4. 算法不会,尚能饭否之对分查找二叉树(又为快速排序之二叉树实现)

    快速排序,可以以数组的形式实现,也可以用二叉树的形式实现,而我的这篇博文,正好 讲的是用二叉树的形式实现的.这种二叉树,又叫对分查找二叉树,在实际的应用中是不胜枚 举的.废话少说,代码贴上,算法比较简 ...

  5. 华为OD机试用Python实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q1 新题)

    华为OD机试题 华为OD机试300题大纲 查找树中的元素 or 查找二叉树节点 题目描述 输入描述 输出描述 说明 示例一 输入 输出 示例二 输入 输出 Python 代码实现 代码编写思路 华为O ...

  6. 信息学奥赛一本通 1367:查找二叉树(tree_a)

    [题目链接] ybt 1367:查找二叉树(tree_a) 可以默认各结点的值是不同的. [题目考点] 1. 二叉树 中序遍历 [解题思路] 中序遍历的同时做计数,判断当前遍历到的结点的值是不是x,如 ...

  7. 1367:查找二叉树(tree_a)

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1367 [题目描述] 已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点. ...

  8. 1367:查找二叉树

    [题目描述] 已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点.例:如图二叉树的数据文件的数据格式如下: [输入] 第一行n为二叉树的结点个树,n<=100:第二 ...

  9. 1367 查找二叉树(tree_a)

    1367:查找二叉树(tree_a) 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 3778     通过数: 2326 [题目描述] 已知一棵二叉树用邻接表结构 ...

最新文章

  1. 学习编写Unity计算着色器 Learn to Write Unity Compute Shaders
  2. linux tf命令,Linux系统命令介绍之vmstat命令详解
  3. XCode 7上传遇到ERROR ITMS-90535 Unexpected
  4. cppcheck编译安装命令
  5. arcgis导出shp文件_地理工具学习--arcgis篇(15):CAD和SHP的简单转换
  6. jqgrid学习(三)
  7. (一)Neo4j在Centos7虚拟机上的安装
  8. Android中常见的MVC/MVP/MVVM模式
  9. Android 兼容 Java 8 语法特性的原理分析
  10. 拖延症讲:反向遍历链表
  11. 带有示例的Python File readline()方法
  12. 抓取网页代码php,PHP抓取网页代码示例
  13. 软件盘将dialog顶上去_Android dialog软键盘弹出顶起View
  14. 联发科5G芯片发布:7nm,4.7 Gbps下载速度,独立AI架构
  15. Spring发布WebService并调用已有的WebService
  16. ubuntu更改ip地址 网官 dns,使ubuntu的ip地址每次启动都是固定
  17. Android系统关于音量相关的控制-初识
  18. Altium Designer 18 导入网络报表到PCB 文件中
  19. 经典网络结构分析:卷积神经网络的现代雏形 ---LeNet
  20. 星起航:在内容为王的时代电商拥抱短视频势不可挡

热门文章

  1. Qt中sender()函数的用法
  2. matlab中设置数据长度,excel表格长宽设置/如何检查excel单元格内数字长度
  3. XML报表打印出错,乱码问题
  4. WslRegisterDistribution failed with error: 0x80370102 Error: 0x80370102 ???????????????????
  5. 分享这13个宝藏素材网站给大家,昨天剪辑10个视频挣了800多
  6. C专家编程读书笔记一:C语言晦涩难懂的声明
  7. n719 rom 卡刷 android 4.3,三星 N719官方4.3纯净版ROM刷机(线刷)获取ROOT权限
  8. Portainer添加远程Docker(Docker API)
  9. neutron理解总结(一)
  10. 10个深度学习的工具