二叉查找树专题

  • 二叉查找树的基本操作
    • 查找
    • 插入
    • 删除
  • 二叉查找树的性质

代码来源:晴神《算法笔记》!!

二叉查找树的基本操作

查找

void search(node* root, int x){if(root == NULL){printf("search failed\n");return;}if(root->data == x)printf("%d", x);else if(x < root->data)search(root->lchild, x)elsesearch(root->rchild, x);
}

插入

void insert(node* &root, int x){if(root == NULL){root = newnode(x);return;}if(root->data == x){  //结点已经存在 return;}else if(x < root->data)insert(root->lchild, x);else insert(root->rchild, x);
}

删除

node* findmax(node* root){  //直接前驱 while(root->rchild != NULL){root = root->rchild;}return root;
}
node* findmin(node* root){  //直接后继 while(root->lchild != NULL){root = root->lchild;}return root;
}
void deletenode(node* &root, int x){   //加引号 if(root == NULL){return;}if(root->data == x){if(root->lchild == NULL && root->rchild == NULL)root = NULL;else if(root->lchild != NULL){node* pre = findmax(root->lchild);root->data = pre->data;deletenode(root->lchild, pre->data);}else{node* next = findmin(root->rchild);root->data = next->data;deletenode(root->rchild, next->data);}}else if(x < root->data)deletenode(root->lchild, x);else deletenode(root->rchild, x);
}

二叉查找树的性质

对二叉查找树进行中序遍历,遍历的结果是有序的。

二叉查找树(BST)专题相关推荐

  1. 二叉查找树BST的删除操作

    二叉查找树BST的删除操作(哈工大版) C++代码 /***** 二叉查找树BST *****/ #include<iostream> using namespace std;struct ...

  2. c# treeview查找并选中节点_最通俗易懂的二叉查找树(BST)详解

    原来来自 呆萌数据结构-06二叉查找树​imoegirl.com 二叉查找树(Binary Search Tree),简写BST,是满足某些条件的特殊二叉树.任何一个节点的左子树上的点,都必须小于当前 ...

  3. 二叉查找树BST基本操作(一)

    一.定义 二叉树:将二叉树定义为一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一棵(独立的)子二叉树. 二叉查找树(BST):是一棵二叉树,其中每一个节点都含有一个可比较的键(以及相关联的 ...

  4. Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码

    1.概念 树一种基本的"非线性"数据结构. 相关术语: 节点Node:组成树的基本部分.每个节点具有名称,或"键值",节点还可以保存额外数据项,数据项根据不同的 ...

  5. 【二叉查找树BST】二叉查找树的基本操作总结

    二叉树就是一棵顺序树,优化查找效率.一组相同的数据所构造出来的二叉查找树不同. 二叉查找树的查找:(一个函数) struct Node{int data;Node* lchild,rchild; }; ...

  6. 数据结构:二叉查找树 BST 平均查找长度 ASL 的计算

    平均查找长度 ASL(Average Search Length),即平均查找长度,在查找运算中,由于所费时间在关键字的比较上,所以把平均需要和待查找值比较的关键字次数称为平均查找长度. 它的定义是这 ...

  7. 二叉查找树(BST)的基本概念及常用操作

    二叉查找树 二叉查找树(Binary Search Tree),也称二叉搜索树.有序二叉树(ordered binary tree),排序二叉树(orted binary tree),是指一棵空树或者 ...

  8. 数据结构——二叉查找树(BST)的删除

    数据结构--二叉树(BST)的删除 文章目录 数据结构--二叉树(BST)的删除 前言 一.BST删除的几种情况 二.节点删除方法 1.一般方法 2.对1方法的优化 3.懒汉删除(前继和后继) 前言 ...

  9. 1043 Is It a Binary Search Tree(二叉查找树BST)

    1043 Is It a Binary Search Tree 0.题目 A Binary Search Tree (BST) is recursively defined as a binary t ...

  10. 二叉树(BT)、二叉查找树(BST)、平衡二叉树(AVL)、B-Tree、B+Tree、红黑树(BRT)

    目录 树的概念 树的分类 二叉树 二叉查找树 平衡二叉树(AVL) B-Tree(平衡多路查找树) B树的关键特征 B+Tree B+树关键特征 红黑树(BRT) 左旋 右旋 时间复杂度 树形结构是一 ...

最新文章

  1. Pandas把dataframe中的整数数值(integer)转化为时间(日期、时间)信息实战
  2. CS中常用转义符与@符号的作用
  3. Log4j配置文件解读和模板页收藏
  4. cocos2d-html5 简易 下拉表单 控件
  5. java 获取插入数据的自增长id
  6. android radiogroup 获取点击位置_屏幕连点器,解放双手[Android]
  7. bash 将二进制转换为十进制_一文帮你详细图解二进制、八进制、十进制、十六进制之间的转换...
  8. 学习channel设计:从入门到放弃
  9. vue引入外部文件_vue3+typescript引入外部文件
  10. 命令历史及快捷键介绍
  11. html微数据,HTML5之 Microdata微数据
  12. 如何用Lucene实现实时搜索--Tripod
  13. android 串口工具下载,SerialTool串口调试工具-SerialTool apkv1.2 android最新版_永辉资源网...
  14. 理解Python装饰器(Decorator)
  15. python怎么判断日期是星期几_【Java编程基本功】(八)逆序输出、是否为回文数,判断星期几,升序排列...
  16. js、css基础总结
  17. 天肌处理器天梯排行榜2022 2022天玑处理器天梯图
  18. 如何把两个视频拼在一个画面上?这样制作“画中画”
  19. linux查看进程临时日志,Linux sed查看某时间段的系统日志
  20. 代码 todo 忘记_永远不要忘记您的仓库项目经理tickgit的TODO评论

热门文章

  1. php删除双引号,php如何去除引号
  2. guzzlehttp/guzzle使用
  3. 云计算效果如何,Mixpanel现身说法
  4. 数据库死锁的预防与解除
  5. ElasticSearch教程-索引的介绍
  6. [高通SDM450][Android9.0]禁止电话、短信呼入
  7. java裁剪图片_java实现图片的缩放和裁剪
  8. Python 图片转pdf
  9. 网页前往小程序指定页面
  10. 《Web设计大全》读书笔记之一