每天一点数据结构之二叉树的查找和删除

【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归) 本代码是在windows平台下vs2008上编译通过,包含搜索二叉树的插入,查找和删除算法(采用递归和非递归两种方法)。包含全部在平台下的文件,解压可以直接运行。 立即下载

每天一点数据结构之二叉树的查找

一.二叉树的查找我将它分为两类,一类是满足左子树的值小于根小于右子树,那么可以根据这个特性去查找会比较高效。
从根节点开始查找,如果当前值等于根则返回,如果小于根则沿左子树继续查找,如果大于根则沿右子树继续查找,直到找到为止,否则返回null。
BinaryTree.prototype.searchBalanceTree = function (data)
{
	var current = this.root;
	while (current != null)
	{
		if (current.data == data)
		{
			return current;
		}
		else if (current.data > data)
		{
			current = current.left;
		}
		else 
		{
			current = current.right;
		}
	}
	return null;
}


但是如果二叉树并不满足这个条件,那么就通过二叉树的遍历去查找了。先序,中序,后序都ok,这里就不附代码了。
二.二叉树的删除
二叉树的删除其实是最复杂的,列举一个简单的思路:
1.先找到要删除的结点
2.该结点一般分为两种类型
3.一种是无子树,或者只有一个子树,这种情况比较好处理,得到该结点的父结点,让父结点指向空或者改结点的子结点即可
4.第二种情况比较复杂,该结点有左右子树,我们沿该结点的左子树查找到它的左子树中的最大值,将这个结点称为max结点,用max结点的值替换要删除的结点的值,然后删除掉max结点即可。为什么要这么做,因为max结点必然在树的边缘(满足左子树小于根小于右子树的情况下),所以最多只有一颗子树,能有效的避免有两个子树无法处理的问题。

二叉树的删除就暂时总结这么多,代码还没有调好难过,就不上代码了~ 关于二叉树的删除以后再继续学习~

数据结构二叉树查找方式 二叉树查找,,方便快捷,,效率高 立即下载

相关推荐

opencv 常用函数总结

本文是一份OpenCV图像处理的常用函数总结,详细介绍了图像的读入、显示、保存、像素处理、图像属性获取、基础操作、阈值处理、图像平滑、形态学转换以及直方图处理等关键技术。文章通过代码示例和参数说明,帮助读者快速掌握OpenCV在图像处理领域的应用。

weixin_44063529的博客 1600

二叉排序树删除并插入某结点是否与原树相同?(简答)

二叉排序树删除并插入某结点是否与原树相同? 答:二叉排序树删除并插入某结点,得到的二叉排序树与原来有可能相同,也可能不同。 解释:排序二叉树可以删除树中任意结点,但插入的新结点一定是某个叶结点。所以删除并插入某结点的二叉排序树可能与原树相同,也可能不同。 ...

black_procedure的博客 4748

解决com.kingbase8.util.KSQLException: This _connection has been closed.

一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend. java.net.SocketTimeoutException: Read timed out.

qq_38127559的博客 2757

二叉树知识总结

数组的搜索比较方便,可以直接用下标,但删除和插入就比较麻烦;链表与之相反,删除和插入元素很快,但查找比较慢;此时,二叉树应运而生,二叉树既有链表的好处,也有数组的好处,在处理大批量的动态数据时比较好用,是一种折中的选择。文件系统和数据库系统一般都是采用树(特别是B树)的数据结构数据,主要为排序和检索的效率。二叉树是一种最基本最典型的排序树,用于教学和研究树的特性,本身很少在实际中进行应用,因为缺点太明显,就像冒泡排序一样,因为效率问题并不实用,但也是我们必须会的。//默认null。...

追光少年的博客 2859

ENVI SARscape安装全攻略:从下载到汉化一步到位(附最新试用申请链接)

本文提供ENVI SARscape从下载安装到汉化的完整指南,特别针对InSAR(合成孔径雷达干涉测量)分析环境搭建。详细介绍了系统要求、分步安装流程、汉化优化方法及硬件加速配置,并分享数据处理验证和常见问题解决方案,帮助用户高效搭建遥感数据分析平台。

rnn9storyteller的博客 1412

Allan方差读图分析IMU误差指标

Allan方差标定IMU参数实测分析

weixin_44927558的博客 3566

二叉树删除子树

编写程序对给定二叉树执行若干次删除子树操作,输出每次删除子树后剩余二叉树的中根序列。二叉树结点的数据域值为不等于0的整数。每次删除操作是在上一次删除操作后剩下的二叉树上执行。 输入格式: 输入第1行为一组用空格间隔的整数,表示带空指针信息的二叉树先根序列,其中空指针信息用0表示。例如1 5 8 0 0 0 6 0 0表示如下图的二叉树。第2行为整数m,表示要进行的删除操作次数。接下来m行,每行一个不等于0的整数K,表示要删除以K为根的子树。m不超过100,二叉树结点个数不超过5000。输入数据保证各结点

qq_24624539的博客 4116

RWEQ土壤风蚀模型的估算与变化归因分析

本次以介绍RWEQ模型的基本原理及数据需求,再结合案例讲解RWEQ模型中区域地理空间数据库构建的方法和各个参量提取的原理与方法,最后结合典型案例进行综合讲解风蚀模数估算、制图及归因分析。空间分析与制图:提取分析、局部分析、邻域分析、区域分析、插值分析、平滑处理、像元提取、采样与重采样。以某实际应用为案例,掌握RWEQ模型进行当地土壤风蚀量空间分布分析整体流程。地图服务器、在线地图、范围指示器、格网、表格、基础地图服务使用规则介绍。掌握土壤风蚀模型的原理、优势点及因子组成。

2301_77413856的博客 1194

关于删除二叉树子树的两种操作

/*一、 名称:删除二叉树中以x为根的子树 说明:此程序的大部分内容,注释都解释的较为详细了。在这里需要提及一点的是此处递归函数flag传递的不是上篇中讲的引用,而是普通的变量,因为在向下传递参数(当前结点是否是x的信息)的过程中只要传递给对应的子树,并不需要传递给整个树的结点。在下一篇会做个关于递归传递参数的总结。*///递归删除二叉树中以x为根的子树,(flag为标志) int ...

Geek_sun的博客 6132

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

七天征服AutoSAR/SomeIP_01速成配置并代码生成

本文为AutoSAR中SomeIP配置开发的实操指南摘要,重点介绍通过通信矩阵快速构建SomeIP工程的方法。核心内容包括:1)基于Excel通信矩阵生成系统描述文件(arxml);2)在AutoSAR工具中导入文件自动生成协议栈配置,涵盖ETHIF、SoAd等模块;3)关键报错处理(COM/PDUR/SOAD/SD模块的配置修正);4)SomeIPXF的数据编解码配置;5)SWC组件与RTE任务映射。教程强调"先完成再完美"的实践原则,指导开发者快速生成基础代码框架,为后续协议调试奠定

大叔带刺的博客 304

数据结构与算法篇 二叉树(Binary Tree)(二)

今天要讲的是二叉查找树(Binary Search Tree),是一种最常用的二叉搜索树,支持快速查找,删除,插入数据。 它是如何实现的呢?,其实它依靠的它的数据结构,在树中的任意一个节点,其左子树的每个节点的值都小于这个节点的值,右子树都大于这个节点的值。 接下来我们来看一下二叉树是怎么实现快速查找,删除,添加 首先我们来看一下查找是怎么实现的,快速查找是依赖二叉树的这种的特殊的数据结...

weixin_38452632的博客 774

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

本篇文章将带大家深入学习任务的创建和分析任务调度的机制。本篇文章深入的讲解了任务创建的内部实现和任务调度的源代码分析和实现,学习这篇文章有助于更深入的学习FreeRTOS的源码。

m0_49476241的博客 6391

每天一个数据结构之-二叉树

二叉树。通过一个示例展示二叉树是什么样子的。 c语言,二叉树的建立以及中序遍历。 #include <stdio.h> #include <string.h> #define TElemType int //构造结点的结构体 typedef struct BiTNode{ TElemType data;//数据域 struct BiTNode *lchild...

麦子点点的博客 275

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

c# treeview查找并选中节点_每天5分钟用C#学习数据结构(31)查找 Part 2

前面讨论的几种查找方法中,二分查找效率最高,但其要求表中记录按照关键字有序,且只能在顺序表上实现,从而需要在插入和删除操作时移动很多的元素。如果不希望表中记录按关键字有序,而又希望得到较高的插入和删除效率,可以考虑使用几种特殊的二叉树或树作为表的组织形式。本篇阅读时间大约为15min。1二叉查找树基本概念二叉查找树(Binary Search Tree, BST)又称二叉排序树,它是满足如下性质的...

weixin_39645268的博客 445

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数据结构--栈、队列、链表、散列表、排序二叉树

一、栈(stack) 栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种, 前者相当于插入,后者相当于删除最后的元素。 二、队列(queue) 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的 后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为 队尾,进行删除操作的端称为队头。 三

杀神lwz的博客 1242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【数据结构】动态查找表

动态查找表是一类支持高效查找、插入和删除操作的数据结构,广泛应用于计算机领域。本文介绍了四种主要类型:二叉排序树(BST)作为基础结构,平衡二叉树(AVL树)通过严格平衡因子保证性能,红黑树通过颜色标记实现高效维护,B-树和B+树则适用于外存存储和大规模数据。文中提供了Python实现的二叉排序树代码示例,并阐述了动态查找表在数据库索引、编译器符号表和搜索引擎等场景中的实际应用。随着大数据发展,动态查找表将继续演进,在分布式系统和智能数据管理等领域发挥更大作用。

大雨淅淅的博客 815

数据结构期末复习速成

数据结构期末复习速成,没有很详细的知识点,只是对照常考的题目提醒,把关键的一些基础题目设计到的知识点重新梳理了一遍,静下心把这些都快速的过一遍,相信你能收获不少,每天复习一点就会持续更新一点!期末不挂科! 数据和数据结构 定义 数据 数据元素:数据的基本组织单位 数据项:数据元素的组成部分 数据对象:具有相同性质的数据元素的集合 数据的结构分为数据逻辑结构和数据存储结构 数据逻辑结构 4种基本数据逻辑结构类型: 集合 线性结构 数据元素之间是一对一关系 树形结构 数据元素之间是一对多关系 图

传播是知识存在的意义 7104

《算法和数据结构》数据结构篇

蓝桥杯你必须学会的算法

英雄哪里出来 4万+

每天进步一点之灵魂拷问5,之这次我真的有答案

简单拷问 需要答案私聊我 #1 索引是什么?数据?还是数据结构? #2 查找算法有哪些?(说个3种叭????) #3 哈希表的时间复杂度是多少? #4 哈希表既然如此好,能作为索引么?有什么缺点?(3) ...

万物琴弦存于你的泡沫之中,光锥之外 9445

C语言数据结构【手抄版】第八章 查找

1,熟练掌握顺序查找、二分查找和分块查找的方法,并能灵活应用。 2,熟练掌握二叉排序树的构造方法及查找过程。 3,了解B树的特点及建树过程。 4,熟练掌握散列表的构造方法及其查找过程。 5,熟练掌握各种查找方法在等概率情况下查找成功的平均查找长度的计算方法。

难拳的博客 664

JAVA学习日记每天进步一点点之java数据结构

数据结构的定义 计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。即和数据打交道,具有处理数据的功能:插入、寻找、删除、迭代等。 参考https://www.cnblogs.com/ysocean/p/7889153.html有具体的数据结构基础知识 主要的数据结构及其优缺点 我们学习数据结构的内容主要就是学习这些数据结构如何实现对数据做插入、删除、寻找、迭代这些功能...

weixin_42625189的博客 216

集合算法基础--二叉树(上)

点击上方「10分钟编程」关注我呦让我们在一起每天「博学」一点点,成为更好的自己!二叉树 1、问题描述树是一种数据结构,也是用于存储的,在已有数组、链表的情况下,为什还需要树呢?它有什么...

Simon郎的博客 334

JS数据结构与算法学习笔记大全 (温故而知新,可以为师矣。)

一.数据结构简介(序): 1.1 概念 程序设计 = 数据结构 + 算法。 1.2 概念 数据 = 符号 (1). 其可以输入到计算机中。 (2). 能够被计算机识别和处理。 1.3 分类 数据分为: (1).数据元素:数据的基本单位,也称为结点或者记录。 (2).数据对象: 相同特性的数据元素的集合,是数据的一个子集。 (3).数据项: 独立含义的数据的最小单位。 数据的目的是存储,存储的目的是后期的再利用。 1.4 作用 数据结构的主要作用是:阐述关系。 如何存储具有复杂关系的数据更有助于后期对数据的再

你好呀,很高兴你在看这里~ 5850

每天进步一点点之算法(一)

1:合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素; 2:合并两个单链表; 3:倒序打印一个单链表; 4:给定一个单链表的头指针和一个指定节点的指针,在O(1)时间删除该节点; 5:找到链表倒数第K个节点; 6:反转单链表; 7:通过两个栈实现一个队列; 8:二分查找; 9:快速排序; 10:获得一个int型

chajinglong的专栏 700
上一篇: 每天一点数据结构之二叉树的插入与创建
下一篇: nodejs之初识模块化
lavender21
博客等级 码龄11年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值