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;
}

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

  1. 数据结构---二叉搜索树

    数据结构-二叉搜索树 原理:参考趣学数据结构 代码: 队列代码: #pragma once #define N 100 #define elemType bstTree* #include<st ...

  2. 二叉搜索树的删除操作可以交换吗_JavaScript数据结构 — 二叉搜索树(BST)ES6实现...

    1. 概述 最基本的数据结构是向量和链表,为了将二者的优势结合起来,我们引入了二叉树,可以认为二叉树是列表在维度上的拓展.而今天要介绍的二叉搜索树(BST)则是在形式上借鉴了二叉树,同时也巧妙借鉴了有 ...

  3. 数据结构 二叉搜索树BST的实现与应用

    概念 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 1.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 ...

  4. [学习][数据结构]二叉搜索树

    定义 一棵二叉搜索树是以一棵二叉树来组织的,如下图.这样一棵树可以使用一个链表数据结构来表示,其中每个节点就是一个对象.除了key和卫星数据之外,每个节点还包含属性left.right和p,他们分别指 ...

  5. 数据结构——二叉搜索树

    一.定义 二叉搜索树(binary search tree),又叫二叉查找树.二叉排序树.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于 ...

  6. 是否同一棵二叉搜索树(c语言实现)

    题目 是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树. 输入格式: 输入包含若干组测试数据.每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查 ...

  7. 数据结构 二叉搜索树的删除

    文章目录 概述 待删除的结点没有子树 待删除的结点仅有一颗子树 待删除的结点有两颗子树 C代码实现 概述 这是一篇短文,专门考究一下二叉搜索树的删除. 二叉搜索树的建立非常简单,如果不熟悉的见此文 树 ...

  8. 23王道数据结构二叉搜索树(BST)算法题(6-11题)总结(伪代码)

    6.判断给定的二叉树是否是二叉排序树 算法思想:中序遍历,一棵树为二叉排序树即左右子树为二叉排序树,且当前根节点和左右子树呈递增序列,对左右子树也是如此判断,显然是个递归过程              ...

  9. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结

    动态管理集合的数据结构--二叉搜索树 搜索树是一种可以进行插入,搜索,删除等操作的数据结构,可以用字典或者优先队列. 二叉排序树又称为二叉查找树,他或者为空树,或者是满足如下性质的二叉树. (1)若它 ...

最新文章

  1. php生成pdf乱码_php+tcpdf生成pdf: 中文乱码
  2. 在html游戏里添加计时,如何在计时器上运行后台任务 (HTML)
  3. iOS Ruby出现问题,导致无法安装Pod
  4. 倒数日怎么设置起始日_起始价131亿!杭州江河汇流区85万方综合体招标延期
  5. GAN做图像翻译的一点总结
  6. spark广播变量的使用(转)
  7. [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行
  8. 为支持两个语言版本,我基于谷歌翻译API写了一款自动翻译的 webpack 插件
  9. java图片转换pdf_Java实现图片转换PDF文件的示例代码
  10. 心情随笔(三):注入新的血液
  11. 薪水太低的你,为什么不跳槽?
  12. Java显示smart3d数据_Smart3D系列教程 | smart3d空三错乱的解决办法
  13. 使用站长工具进行目标域名登记查询
  14. P2P平台公司的9种职位
  15. 手机连接电脑linux系统怎么样,电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)...
  16. Rate 函数在PromQL 查询中的使用
  17. 企查查之seleium自动化操作
  18. 【学习日记2023.4.25】之 前后端分离_前端工程化_Vue组件库Element_Vue路由_打包部署
  19. dwcs6连接不上access数据库_在DW中实现与ACCESS数据库连接方法
  20. 研究发现,每天冲洗鼻腔,可减少新冠症状和死亡风险

热门文章

  1. LeetCode 1678. 设计 Goal 解析器
  2. LeetCode MySQL 1308. 不同性别每日分数总计(累加/变量/窗口函数)
  3. LeetCode 1228. 等差数列中缺失的数字
  4. LeetCode 1361. 验证二叉树(图的出入度)
  5. POJ 1581 优先队列 priority_queue -- 比赛胜者求解
  6. 计算机水平考试ppt试卷,计算机等级考试一级笔试卷库.ppt
  7. Python进阶-函数默认参数,特别是参数传递为空列表
  8. 华为nova4是不是鸿蒙系统,华为nova 4手机什么时候可以升级鸿蒙系统?鸿蒙系统nova4升级时间介绍...
  9. 新分类!全总结!最新Awesome-SLU-Survey资源库开源!
  10. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?