当前位置:网站首页>树形查找(二叉查找树)
树形查找(二叉查找树)
2022-08-05 01:48:00 【跋扈洋】
介绍
我们在平时的查找算法中,最多的往往是顺序查找和折半查找,而对树形查找往往一知半解,本文主要介绍二叉排序树的创建,插入和查找。
树的定义
树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。
而如果一棵树他的每个节点最多含有两个子树的树称为二叉树。
二叉树的程序定义一般如下:
typedef char Elemtype ;
typedef struct BiNode
{
Elemtype data;
struct BiNode *lchild,*rchild;
}*BiTree;
二叉排序树的插入
添加一个值为k的节点到树T上。
int BST_inser(BiTree T,Elemtype k)
{
if(T==NULL)
{
T=(BiTree)malloc(sizeof(BiNode));
T->data=k;
T->lchild=NULL;
T->rchild=NULL;
return 1;//插入成功
}
else if(T->data==k)
{
return 0;
}
else if(T->data>k)
{
return BST_inser( T=T->lchild,k);
}
else
{
return BST_inser(T=T->rchild,k);
}
}
二叉排序树的创建
二叉排序树的创建其实就是创建一个空树,然后将一组数据依次存放到这个树种。
void Creat_BST(BiTree &T,Elemtype a[],int n)
{
T=NULL;//初始时T为空树
int i=0;
while(i<n)
{
BST_inser(T,a[i]);
i++;
}
}
树形查找
二叉排序树的查找其实非常简单,就是将值k从排序树的根节点,依次往下差,当k大于当前比对的T节点值的时候,查找此节点T的右孩子,当k小于当前比对的T节点值的时候,查找此节点T的左孩子,当等于此节点的值的时候,返回此节点。
BiNode *Bst_search(BiTree T,Elemtype k)
{
while(T!=NULL&&T->data!=k)
{
if(k<T->data)
T=T->lchild;
else
T=T->rchild;
}
return T;
}
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏和软硬结合专栏。
欢迎关注公众号了解更多。
编写不易,感谢支持。
边栏推荐
- Live playback including PPT download | Build Online Deep Learning based on Flink & DeepRec
- 新唐NUC980使用记录:在用户应用中使用GPIO
- 从一次数据库误操作开始了解MySQL日志【bin log、redo log、undo log】
- 如何发现一个有价值的 GameFi?
- ORA-00604 ORA-02429
- MySQL3
- GCC: Shield dependencies between dynamic libraries
- Jin Jiu Yin Shi Interview and Job-hopping Season; Are You Ready?
- C# const readonly static 关键字区别
- 快速批量修改VOC格式数据集标签的文件名,即快速批量修改.xml文件名
猜你喜欢
Log an error encountered when compiling google gn "I could not find a ".gn" file ..."
PCIe Core Configuration
第十一章 开关级建模
深度学习:使用nanodet训练自己制作的数据集并测试模型,通俗易懂,适合小白
执掌图表
超越YOLO5-Face | YOLO-FaceV2正式开源Trick+学术点拉满
source program in assembly language
方法重写与Object类
[Unity Entry Plan] Handling of Occlusion Problems in 2D Games & Pseudo Perspective
Day Fourteen & Postman
随机推荐
How DHCP works
自定义线程池
Knowledge Points for Network Planning Designers' Morning Questions in November 2021 (Part 2)
优化Feed流遭遇拦路虎,是谁帮百度打破了“内存墙”?
如何创建rpm包
Methods commonly used interface automation test framework postman tests
"Configuration" is a double-edged sword, it will take you to understand various configuration methods
EBS uses virtual columns and hint hints to optimize sql case
JVM类加载简介
If capturable=False, state_steps should not be CUDA tensors
《.NET物联网从零开始》系列
(17) 51 MCU - AD/DA conversion
MySQL3
AI+PROTAC|dx/tx完成500万美元种子轮融资
day14--postman接口测试
C language basics -- pointers
使用OpenVINO实现飞桨版PGNet推理程序
Utilities PHP Skills Assessment
Interview summary: Why do interviewers in large factories always ask about the underlying principles of Framework?