数据结构——二叉搜索树的C语言实现

1.什么是二叉搜索树?

在这里插入图片描述

2.二叉搜索树的操作

在这里插入图片描述

3.二叉搜索树的C语言实现

#include<stdio.h>
#include<stdlib.h>#define ElementType int
typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode{ElementType Data;BinTree Left;BinTree Right;
};//1.初始化
BinTree MakeEmpty()
{BinTree BT;BT=(BinTree)malloc(sizeof(struct TreeNode));BT->Left=NULL;BT->Right=NULL;return BT;
}//2.查找某值,返回元素的结点指针
Position Find(ElementType X,BinTree BST)
{while(BST){if(X>BST->Data){BST=BST->Right;}else if(X<BST->Data){BST=BST->Left;}else{return BST;}}return NULL;
}//3.查找最小值所在的结点指针
Position FindMin(BinTree BST)
{while(BST->Left){BST=BST->Left;}return BST;
}//4.查找最大值所在的结点指针
Position FindMax(BinTree BST)
{while(BST->Right){BST=BST->Right;}return BST;
}//5.插入
BinTree Insert(ElementType X,BinTree BST)
{if(!BST){BST=(BinTree)malloc(sizeof(struct TreeNode));BST->Data=X;BST->Left=BST->Right=NULL;}else{if(X<BST->Data){BST->Left=Insert(X,BST->Left);}else if(X>BST->Data){BST->Right=Insert(X,BST->Right);}}return BST;
}//6.删除
BinTree Delete(ElementType X,BinTree BST)
{Position Tmp;if(!BST){printf("要删除的元素未找到\n");}else if(X<BST->Data){BST->Left=Delete(X,BST->Left);}else if(X>BST->Data){BST->Right=Delete(X,BST->Right);}else{if(BST->Left&&BST->Right){Tmp=FindMin(BST->Right);BST->Data=Tmp->Data;BST->Right=Delete(BST->Data,BST->Right);}else{Tmp=BST;if(!BST->Left){BST=BST->Right;}else if(!BST->Right){BST=BST->Left;}free(Tmp);}}return BST;
}
int main()
{int i;BinTree BST[6];for(i=0;i<6;i++){BST[i]=MakeEmpty();}BST[0]->Data=18;BST[0]->Left=BST[1];BST[0]->Right=BST[2];BST[1]->Data=10;BST[1]->Left=BST[3];BST[1]->Right=BST[4];BST[2]->Data=20;BST[2]->Right=BST[5];BST[3]->Data=7;BST[4]->Data=15;BST[5]->Data=22;printf("%d  %d\n",BST[0]->Data,BST[0]->Left->Data);Position BST1;BST1=Find(22,BST[0]);printf("%d\n",BST1->Data);Position BST2;BST2=FindMin(BST[0]);printf("MIN=%d\n",BST2->Data);Position BST3;BST3=FindMax(BST[0]);printf("MAX=%d\n",BST3->Data);BST[0]=Insert(19,BST[0]);printf("%d\n",BST[0]->Right->Left->Data);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟整个地球:英伟达Earth-2超级计算机即将上线

来源&#xff1a;机器之心未来几十年的世界将会发生什么变化&#xff0c;英伟达决定制造一台超级计算机来模拟整个地球。「如何让我们的未来在今天就变成现实呢&#xff1f;答案就是模拟&#xff0c;」英伟达创始人、CEO黄仁勋说道。上周二的GTC大会上&#xff0c;英伟达提出了…

数据结构——堆的C语言实现

1.什么是堆&#xff1f; 2.堆的抽象数据类型描述 3.堆的C语言实现 #include<stdio.h> #include<stdlib.h>#define ElementType int #define MaxData 100 typedef struct HeapStruct *MaxHeap; struct HeapStruct{ElementType *Elements;int Size;int Capacity; };…

洛谷P1067 多项式输出

.. 题目描述 一元nn次多项式可用如下的表达式表示&#xff1a; f(x)a_nx^na_{n-1}x^{n-1}\cdots a_1xa_0,a_n\ne 0f(x)an​xnan−1​xn−1⋯a1​xa0​,an​≠0 其中&#xff0c;a_ix^iai​xi称为ii次项&#xff0c;a_iai​ 称为ii次项的系数。给出一个一元多项式各项的次数和系…

李飞飞团队:如何制造更聪明的人工智能?让人工生命在复杂环境中进化

来源&#xff1a;集智俱乐部作者&#xff1a;郭瑞东 审校&#xff1a;张澳 编辑&#xff1a;邓一雪 论文题目&#xff1a;Embodied intelligence via learning and evolution论文链接&#xff1a;https://www.nature.com/articles/s41467-021-25874-z1. 智能和身体形态有关动物…

数据结构——图的C语言实现

文章目录1.什么是图&#xff1f;2.图的抽象数据结构3.如何在程序中表示一个图&#xff1f;3.1 邻接矩阵3.2 邻接表4.图的遍历4.1 深度优先搜索4.2 广度优先搜索5.图的C语言实现1.什么是图&#xff1f; 2.图的抽象数据结构 3.如何在程序中表示一个图&#xff1f; 3.1 邻接矩阵 …

Koa 中间件的执行

Node.js 中请求的处理 讨论 Koa 中间件前&#xff0c;先看原生 Node.js 中是如何创建 server 和处理请求的。 node_server.js const http require("http"); const PORT 3000;const server http.createServer((req, res) > {res.end("hello world!");…

张亚勤院士谈“智能计算新趋势”

来源&#xff1a;人工智能计算大会作为第四次工业革命的核心&#xff0c;人工智能已经成为全球新一轮科技革命和产业变革的核心驱动力。在2021人工智能计算大会&#xff08;AICC 2021&#xff09;上&#xff0c;清华大学智能科学讲席教授、美国艺术与科学院院士张亚勤带来了《智…

数据结构——排序算法

文章目录1.简单排序1.1 冒泡排序1.2 插入排序2.希尔排序1.简单排序 1.1 冒泡排序 #include<stdio.h>#define ElementType intvoid Swap(ElementType *a,ElementType *b) {ElementType temp;temp*b;*b*a;*atemp; } void Bubble_Sort(ElementType A[],int N) {int p,i;fo…

13、git

安装Git 网上有很多Git安装教程&#xff0c;如果需要图形界面&#xff0c;windows下建议使用TortoiseGit&#xff0c;linux建议使用Git GUI或者GITK。(windows下载exe安装包&#xff0c;linux可以使用命令行&#xff09; 1. Git基本配置 配置用户名及邮箱 在使用Git提交前&…

神经网络支持大脑是「预测机器」,预测是节能的

来源&#xff1a;ScienceAI编译&#xff1a;绿萝我们的大脑&#xff0c;一个包裹在骨性头骨内的三磅重的组织&#xff0c;如何从感觉中产生知觉是一个长期存在的谜。大量证据和数十年的持续研究表明&#xff0c;大脑不能像拼拼图一样&#xff0c;简单地组合感官信息来感知周围环…

数据结构与算法——链表题目实现

文章目录1.链表逆序1.1 题目描述1.2链表逆序的C实现2.反转链表2.1 题目描述2.2 反转链表的C实现3.求两个链表的交点3.1 题目描述3.2 C实现——set3.3 C语言实现——链表长度实现4.链表求环4.1 题目描述4.2 C实现4.3 C语言实现——快慢指针5.分隔链表5.1 题目描述5.2 C实现6.复制…

元宇宙不是下一代互联网,而是人类群体思维空间或梦境世界的具现

前言&#xff1a;本文是根据6G俱乐部举办的6G与元宇宙研讨会上的发言整理形成作者&#xff1a;刘锋目前&#xff0c;业内有一种声音提出元宇宙是下一代互联网&#xff0c;之前WEB2.0、物联网、移动互联网和区块链爆发的时候也曾经这样表达过&#xff0c;如果从互联网的发展历史…

【Redis】三、Redis安装及简单示例

&#xff08;四&#xff09;Redis安装及使用 Redis的安装比较简单&#xff0c;仍然和大多数的Apache开源软件一样&#xff0c;只需要下载&#xff0c;解压&#xff0c;配置环境变量即可。具体安装过程参考&#xff1a;菜鸟教程Redis安装。 安装完成后&#xff0c;通过redis-ser…

数据结构和算法——栈、队列、堆

文章目录1.预备知识1.1 栈1.2 队列1.3 堆2.用队列实现栈2.1 题目描述2.2 解题思路2.3 C实现3.用栈实现队列3.1 题目描述3.2 解题思路3.3 C实现4.最小栈4.1 题目描述4.2 解题思路5.合法的出栈序列5.1 题目描述5.2 解题思路5.3 C实现6.基本计算器6.1 题目描述6.2 解题思路7.数组中…

LeetCode 刷题笔记 (树)

1. minimum-depth-of-binary-tree 题目描述 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.求二叉树的最小深度&#xff1b;解题思路 递归遍历二叉树的每…

综述 | 北斗系统应用趋势分析

来源&#xff1a;智绘科服初审&#xff1a;张艳玲复审&#xff1a;宋启凡终审&#xff1a;金 君一、前言2020年6月23日&#xff0c;北斗三号最后一颗组网卫星成功发射。2020年7月31日&#xff0c;北斗三号建成暨开通仪式举行&#xff0c;北斗三号全球卫星导航系统正式开通[1]…

数据结构与算法——贪心算法

文章目录1.分发饼干1.1 题目描述1.2 解题思路1.3 C实现2.摆动序列2.1 题目描述2.2 解题思路2.3 C实现3.移掉K位数字3.1 题目描述3.2 解题思路3.3 C实现4.跳跃游戏4.1 题目描述4.2 解题思路4.3 C实现5.跳跃游戏 II5.1 题目描述5.2 解题思路5.3 C实现6.用最少数量的箭引爆气球6.1…

人为什么要睡觉?科学家给出进一步答案

来源&#xff1a;科技日报作者&#xff1a;张佳欣 人类一生中有三分之一的时间在睡觉&#xff0c;包括苍蝇、蠕虫甚至水母等无脊椎动物也会睡觉。在整个进化过程中&#xff0c;睡眠对所有具有神经系统的有机体来说都是普遍的&#xff0c;也是必不可少的。然而你有没有想过&…

自我觉察-3:发现-我这么做究竟为了什么?

今天一个人在食堂吃饭时&#xff0c;不是很饿&#xff0c;又拿了很多菜&#xff0c;就挑挑拣拣的吃&#xff0c;然后呢&#xff0c;又觉得吃相不雅&#xff0c;让别人看了不好。就有点儿端着架子吃似的。这时候&#xff0c;我突然想起一句话“我用自认为优雅地姿势吃饭为了什么…

操作系统——简介

文章目录1.操作系统的功能和目标1.1 作为用户和计算机硬件之间的接口1.2 作为系统资源的管理者1.3 作为最接近硬件的层次2.操作系统的概念、功能和目标3.操作系统的四大特征3.1 并发3.2 共享3.3 虚拟3.4 异步4.操作系统的运行机制4.1 两种指令4.2 两种处理器状态4.3 两种程序5.…