当前位置: 首页 > news >正文

数据结构 -- 树形查找(一)二叉排序树

二叉排序树

二叉排序树的定义

二叉排序树,又称二叉查找树

一棵二叉树或者是空二叉树,或者是具有以下性质的二叉树:

左子树上所有结点的关键字均小于根结点的关键字

右子树上所有结点的关键字均大于根结点的关键字

左子树和右子树又各是一棵二叉排序树

(二叉排序树中序遍历,可以得到一个递增的有序序列)

二叉排序树的查找

在这里插入图片描述

typedef struct BiTNode{ElemType data;						//数据域struct BiTNode * lchild,*rchild;	//左右孩子
}BiTNode,*BiTree;//查找实现
BSTNode *BST_Sreach(BSTree T,int key){while(T!=NULL&&key!=T->key){if(key<T->key) T=T->lchild;else T = T->rchild;}return T;
}//最坏时间复杂度O(1)//递归实现
BSTNode *BST_Sreach(BSTree T,int key){if(T==NULL) return NULL;if(key == T->key) return T;else if(key < T->key) return BST_Sreach(T->lchild,key);else return BST_Sreach(T->rchild,key);
}//最坏时间复杂度O(n)
二叉排序树的插入
//在二叉排序树插入关键字为k的新结点(递归实现)
int BST_Insert(BSTree &T,int k){if(T==NULL){T=(BSTree)malloc(sizeof(BSTNode));T->key = k;T->lchild = T->rchild = NULL;return 1;}else if(k == T->key)	return 0;		//树中存在相同关键字的结点,插入失败else if(k<T->key)	return BST_Insert(T->lchild,k);else return BST_Insert(T->rchild,key);
}
二叉排序树的构造
//按照str[]中的关键字序列建立二叉排序树
void Create_BST(BSTree &T,int str[],int n){T = NULL;int i = 0;while(i<n){BST_Insert(T,str[i]);++i;}
}
二叉排序树的删除

先搜索找到目标结点:

①若删除的结点z是叶结点,则直接删除

②若要删除的结点z只有一棵左子树或右子树,则让z的子树称为z的父节点的子树,代替z的位置

③若要删除的结点有左右两棵子树,则令z的直接后继(或直接前驱)代替z,然后从二叉排序树中删去这一个直接后继(或直接前驱),这样就转化成了第一或第二种情况

查找效率分析

查找长度 – 在查找运算中,需要对比关键字的次数称为查找长度,反映了查找操作的时间复杂度

相关文章:

  • 乡村地区无人机医药配送路径规划与优化仿真
  • 当服务器出现宕机情况该怎么办?
  • 【Vue】CSS3实现关键帧动画
  • [C++面试] lambda面试点
  • IOS CSS3 right transformX 动画卡顿 回弹
  • Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)
  • mac安装cast
  • 函数专题1
  • Kaamel隐私合规洞察:Temu在韩被罚事件分析
  • RPC框架源码分析学习(二)
  • 什么是路由器环回接口?
  • 鸿蒙OSUniApp 开发的文件上传与下载功能#三方框架 #Uniapp
  • 高云FPGA-新增输出管脚约束
  • 如何检测网站是否支持IPv6?有哪些IPv6测试指标?
  • upload-labs靶场通关详解:第6-9关
  • 【歌曲结构】1:基于歌词的歌曲结构分析:高潮、钩子、双副歌
  • 开发日常中的抓包工具经验谈:Charles 抓包工具与其它选项对比
  • 基于大模型预测胃穿孔预测与围手术期管理系统技术方案
  • React 轻量级富文本编辑器推荐(中文版)
  • 【大模型面试每日一题】Day 19:如何设计自动化评估框架验证大模型的多步推理能力(如数学解题)?
  • 体坛联播|巴萨提前2轮西甲夺冠,郑钦文不敌高芙止步4强
  • 马上评|中学生被操场地面烫伤,谁的“大课间”?
  • 第一集|好饭不怕晚,折腰若如初见
  • 陕西榆林:全力推进榆林学院升格榆林大学
  • 国际奥委会举办研讨会,聚焦如何杜绝操纵比赛
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式