- 2024-08-15二叉查找树
如果一棵二叉树能“查找”,那么这棵树的每一个节点都有一个“键值”,这些节点都按照键值有序排列,这棵树就叫做二叉查找树(BST)。BST的性质每个节点都有唯一的键值,而且可以比较大小。每个节点的左儿子的键值小于自己的键值,自己的键值又小于右儿子的键值,最小键值的节点没有左儿
- 2024-08-12树-BST基本实现
之前的数组,栈,链表,队列等都是顺序数据结构,这里来介绍一个非顺序数据结构,树.树在处理有层级相关的数据时非常有用,还有在存储数据如数据库查询实现等场景也是高频使用.作为一种分层数据的抽象模型,在现实中最常见的例子是族谱,公司组织架构图等.我个人觉得树,图等
- 2024-07-11学习笔记——二叉平衡树(BST)
二叉平衡树(BST)BST是一种数据结构,用于快速查找数据。二叉平衡树有一个非常明显的特性:对于每一个节点\(u\),在其左边的数都比它小,在其右边待数都比它大。每个点都有一个权值cnt,用于存储这个数出现了几次。在二叉平衡树上的每一个操作的时间与其树高成正比,约为\(O(\logn)\)。
- 2024-07-04数据结构实验报告:查找
一、实验目的1.掌握查找表的结构。2.掌握顺序查找、折半查找、二叉排序树查找和哈希查找。二、实验环境Windows10、VisualC++6.0三、实验任务1.编写程序实现顺序查找和折半查找。(1)顺序查找#include<stdio.h>#include<stdlib.h>#defineLIST_SIZE20typ
- 2024-07-04【数据结构】(C语言):二叉搜索树(不使用递归)
二叉搜索树:非线性的,树是层级结构。基本单位是节点,每个节点最多2个子节点。有序。每个节点,其左子节点都比它小,其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。C语言实现:(使用链表实现,不使用递归) 创建结构体数据类型(记录二叉
- 2024-05-07二叉搜索树的接口设计
#include<stdio.h>#include<stdbool.h>#include<stdlib.h>typedefintElementType;typedefstructTNode*Position;typedefPositionBinTree;/*二叉树类型*/structTNode{/*树结点定义*/ElementTypeData;/*结点数据*/
- 2024-05-05LeetCode 1373. Maximum Sum BST in Binary Tree
原题链接在这里:https://leetcode.com/problems/maximum-sum-bst-in-binary-tree/description/题目:Givena binarytree root,return themaximumsumofallkeysof any sub-treewhichisalsoaBinarySearchTree(BST).AssumeaBSTisdefinedasfollows:Thel
- 2024-04-29BST二叉查找树的接口设计
/***********************************************************************************************************设计BST二叉查找树的接口,为了方便对二叉树进行节点的增删,所以采用双向不循环链表实现,每个节点内部都需要*有2个指针,分别指向该节点的左子树(lchild)和右子树
- 2024-04-08二叉排序树(BST)
定义二叉排序树是一种特殊的二叉树,其中左子树中的所有节点都小于根节点,右子树中的所有节点都大于根节点(如下图所示)。因此构造过程需要确保插入的元素能够按照这个规则被正确地插入到树中性质1、如果初始状态是一个空树,则插入每个元素的时间复杂度是O(logn),其中n是树中节
- 2024-03-29平衡树
不持续更新。前置知识二叉搜索树又称BST堆其实我也不会FHQ-Treap一般使用小根堆。FHQ-Treap简述FHQ-Treap是一种基于分裂和合并操作的平衡树。它没有旋转,极易上手,非常适合cainiaoshanglu。核心思想我们对于一个点存储两个权值\(a_i,h_i\),其中\(a_i\)满足小根
- 2024-03-25 二叉搜索树 BST 、平衡二叉查找树 AVL 、红黑树
看的是LeetCode一位博主的总结,码住,写得不错。二叉查找树AVL树在插入删除操作时对经过的路经节点进行递归平衡(balance方法,核心是判断左右子树之间的树高关系,然后调用对应的单/双旋转方法)。其他部分其实和BST差不多一样的。红黑树
- 2024-03-03二叉树
记录21:162024-3-31.二叉树1.二叉查找树(BST)2.Treap3.平衡二叉树(AVL)先把自己当时学的时候写的放上来reference:《数据结构与算法分析》嘛,现在只能记得左旋右旋了(喝左旋哈哈哈)点击查看代码#define_CRT_SECURE_NO_WARNINGS//vs中scanf为不安全的函数要使用
- 2024-02-15Delete a node from bst【2月15日学习笔记】
点击查看代码//Deleteanodefrombst#include<iostream>structnode{intdata;node*left;node*right;};node*getnewnode(intx){node*temp=newnode;temp->data=x;temp->left=temp->right=NULL;returntem
- 2024-01-23Find min and max element in bst using recursion【1月23日学习笔记】
点击查看代码#include<iostream>usingnamespacestd;structNode{intdata;Node*left,*right;};Node*newNode(intx){Node*temp=newNode;temp->data=x;temp->left=temp->right=NULL;returntemp;}voidin
- 2024-01-23Find min and max element in bst using iteration【1月23日学习笔记】
点击查看代码#include<iostream>usingnamespacestd;structNode{intdata;Node*left,*right;};Node*newNode(intx){Node*temp=newNode;temp->data=x;temp->left=temp->right=NULL;returntemp;}voidin
- 2023-12-15二叉搜索树(BST)
\(INF\)表示无效值的常量,\(Node\)表示二叉搜索树的结点,\(key、count、left、right\)分别表示节点的键值、数量、左孩子、右孩子,\(size\)表示以该节点为根的子树大小,\(root\)表示树的根节点。\(private\)中的函数解析见注释。\(public\)中:\(empty\):判断树是否为空,时间复杂度:\(O(1
- 2023-12-14文心一言 VS 讯飞星火 VS chatgpt (156)-- 算法导论12.3 3题
三、用go语言,对于给定的n个数的集合,可以通过先构造包含这些数据的一棵二叉搜索树(反复使用TREE-INSERT逐个插入这些数),然后按中序遍历输出这些数的方法,来对它们排序。这个排序算法的最坏情况运行时间和最好情况运行时间各是多少?文心一言:在Go语言中,使用二叉搜索树(BST)进行排序
- 2023-11-14从BST到LSM的进阶之路
前言相信大家之前都了解过很多种数据结构,我之前总是两两的,也就是从局部上去进行比较,没有从整体上进行这些树的发展脉络进行梳理,因此经常看完没多久就忘了。看来确实是需要从本源出发,不仅要知其然还要知其所以然,了解清楚前因后果,不仅可以方便我们记忆,更有利于增加我们的理解深度。
- 2023-11-14从BST到LSM的进阶之路 | 京东物流技术团队
前言相信大家之前都了解过很多种数据结构,我之前总是两两的,也就是从局部上去进行比较,没有从整体上进行这些树的发展脉络进行梳理,因此经常看完没多久就忘了。看来确实是需要从本源出发,不仅要知其然还要知其所以然,了解清楚前因后果,不仅可以方便我们记忆,更有利于增加我们的理解深度。实
- 2023-11-09树
一、简介 二、二叉搜索树 缩写BST,特点是任何一个节点的值都大于其左子树的所有节点的值,任何一个节点的值都小于其右子树的所有节点的值。
- 2023-10-23已知BST的前序遍历,还原BST
已知BST的前序遍历,还原BSTpublicstaticTreeNodegetRoot(int[]arr,List<Integer>list){intindex=-1;for(inti=0;i<arr.length;i++){if(list.contains(arr[i])){index=Collections.binarySearch(list,arr[i])
- 2023-10-16Treap引入
前置知识treap是由BST和heap组合而成的数据结构,这一点也体现在它的名字上:treap=tree+heapBST中,每个节点的左儿子都比它小,右儿子都比它大,可以实现有序的遍历,但是可能因为数据特殊的排列方式,而退化为线性heap中,每个父节点都是当前子树内权值最大(或最小)的点。在BST的基础上加一个
- 2023-10-15 BST-Treap名次树指针实现板子 Ver2.0
为了更好的阅读体验,请点击这里这里只有板子没有原理QWQ可实现1.插入x数2.删除x数(若有多个相同的数,只删除一个)3.查询x数的排名(排名定义为比当前数小的数的个数+1)4.查询排名为x的数5.求x的前驱(前驱定义为小于x,且最大的数)6.求x的后继(后继定义为大于x,且
- 2023-09-12 二叉搜索树(Binary Search Tree,BST)
二叉搜索树(BinarySearchTree,BST)二叉搜索树(BinarySearchTree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质对于二叉搜索树的每个节点左子树中的所有节点的值都小于该节点的值右子树中的所有节点的值都大于(或等于)该节点的值对于二叉搜索树的任意节点,其
- 2023-09-08CS61B学习日记2
今天学习了B树和红黑树的概念总结:1.在cs61b中B树分为2-3树和2-3-4树:其中主要的关键点是定L的大小。L是指一个节点最多拥有的元素个数。B树的不变量(我记作为限制):2.1)每个叶子结点到根的路径数相同。2.2)每个包含元素个数为k的非叶子结点,其必有链接k+1个叶子结点2.本课