当前位置:网站首页>树形查找(二叉查找树)
树形查找(二叉查找树)
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;
}
后续
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏和软硬结合专栏。
欢迎关注公众号了解更多。
编写不易,感谢支持。
边栏推荐
猜你喜欢

The use of pytorch: temperature prediction using neural networks

### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionExcep

MySQL学习

LiveVideoStackCon 2022 Shanghai Station opens tomorrow!

行业现状?互联网公司为什么宁愿花20k招人,也不愿涨薪留住老员工~

MySQL3

一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征

优化Feed流遭遇拦路虎,是谁帮百度打破了“内存墙”?

开篇-开启全新的.NET现代应用开发体验

(17) 51 MCU - AD/DA conversion
随机推荐
【Word】Word公式导出PDF后出现井号括号#()错误
MySQL3
EBS uses virtual columns and hint hints to optimize sql case
day14--postman接口测试
Day Fourteen & Postman
ORA-00257
If capturable=False, state_steps should not be CUDA tensors
亚马逊云科技携手中科创达为行业客户构建AIoT平台
5. PCIe official example
Lattice PCIe 学习 1
2021年11月网络规划设计师上午题知识点(上)
Binary tree [full solution] (C language)
Leetcode刷题——22. 括号生成
JZ搜索引擎solr研究-从数据库创建索引
pytorch的使用:卷积神经网络模块
MySQL learning
oracle将restful接口封装到视图中
Knowledge Points for Network Planning Designers' Morning Questions in November 2021 (Part 2)
PCIe Core Configuration
Are testing jobs so hard to find?I am 32 this year and I have been unemployed for 2 months. What should an older test engineer do next to support his family?