
数据结构
文章平均质量分 72
越甲八千
置身其中,全力以赴
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1 2 3 4 5顺序插入,形成一个红黑树
红黑树是一种自平衡的二叉搜索树,通过颜色标记和平衡性约束确保树高为O(log n)。其核心特性包括节点颜色(红或黑)、根节点和叶子节点为黑色、红色节点的子节点必须为黑色,以及从任一节点到叶子的路径包含相同数目的黑色节点。这些特性使得红黑树在插入和删除时通过颜色调整和旋转操作维持平衡,避免了普通二叉搜索树的退化问题。以顺序插入1、2、3、4、5为例,通过逐步调整和旋转,最终形成一棵符合红黑树性质的有效树结构。原创 2025-05-10 23:56:41 · 476 阅读 · 0 评论 -
为什么有了BST了,还要红黑树,红黑树有什么优点
BST(二叉搜索树)和红黑树都是常见的树形数据结构,但红黑树在某些方面对BST进行了优化,主要解决了BST在特定情况下可能出现的性能问题。虽然牺牲了一定的空间(每个节点多一个颜色位)和插入/删除时的调整开销,但在动态数据结构中表现更可靠,因此被广泛应用于各种高性能系统中。红黑树通过引入颜色标记和平衡性约束,解决了BST在特定情况下的退化问题,提供了稳定的。这种情况下,BST的效率大幅降低,无法满足高效查询的需求。,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在。维持平衡,避免了BST的退化问题。原创 2025-05-10 23:52:41 · 692 阅读 · 0 评论 -
SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景
【代码】SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景。原创 2025-03-26 16:04:37 · 1122 阅读 · 0 评论 -
堆栈溢出常见原因
堆栈溢出会导致程序异常终止,在开发过程中,需要注意合理使用内存,避免出现上述导致堆栈溢出的情况。可以通过工具来检测内存泄漏和分析堆栈使用情况,及时发现和解决问题。原创 2025-03-25 11:19:53 · 577 阅读 · 0 评论 -
C++遍历树,前中后序,递归非递归实现
通过运行上述代码,你可以看到不同遍历方式的结果。原创 2025-03-21 08:49:22 · 382 阅读 · 0 评论 -
总结一下数据结构 树 的种类
二叉树是一种每个节点最多有两个子节点的树结构,这两个子节点通常被称为左子节点和右子节点。二叉树可以为空树(即没有任何节点),也可以由一个根节点以及其左子树和右子树组成,左子树和右子树同样也是二叉树。1/ \2 3/ \ / \4 5 6 7这就是一个简单的二叉树示例,节点1是根节点,它有左子节点2和右子节点3,节点2又有自己的左子节点4和右子节点5等等。二叉搜索树是一种特殊的二叉树,它满足以下性质:对于树中的任意节点,其左子树中的所有节点值都小于该节点的值,其右子树中的所有节点值都大于该节点的值。原创 2024-12-25 22:28:08 · 1031 阅读 · 0 评论 -
链表逆置
链表逆置: 1:先用一个newroot指向链表头结点; 2:用curr指向头结点的下一个节点,nextnode指向curr的下一个节点,用来更新curr; 3:断开头结点与链表的链接; 4:循环头插法把curr插入newnode为头结点的链表; 5:curr更新为下一个节点; 代码如下:#include<stdio.h>#include<stdlib.h>typedef struct原创 2016-10-02 18:07:17 · 1683 阅读 · 0 评论 -
二叉树的反转镜像
二叉树的镜像就是二叉树对称的二叉树,比如 镜像之后 就是交换每一非叶子节点的左子树指针和右子树指针 1:递归,如果节点为空,返回,否则交换左右孩子指针;递归镜像节点的左子树,右子树; 2:非递归:交换每一非叶子节点的左子树指针和右子树指针 ,利用队列,根节点先入队;交换队列第一个节点的左右孩子之针,然后把第一个节点的左右孩子入队,然后pop();直到队列为空;即遍历原创 2016-10-01 17:27:09 · 4375 阅读 · 0 评论 -
递归和非递归快排
#include<iostream>#include<stack>using namespace std;//快排int Partion(int *arr, int beg, int end){ if(arr==NULL) { exit(-1); } int tep = arr[beg]; while(beg<end) {原创 2016-09-28 14:16:07 · 1339 阅读 · 0 评论 -
二叉树的非递归层次遍历
#include<iostream>#include<stack>#include<queue>using namespace std;typedef struct Node{ char data; Node*lchild; Node*rchild;}Node;//创建一个节点Node*BuyNode(){ Node* p = new(nothrow)N原创 2016-09-22 13:37:33 · 1679 阅读 · 1 评论 -
各种排序
#include<iostream>using namespace std;//直接插入排序void Insert(int *arr, int len){ for(int i=0;i<len-1;++i) { if(arr[i+1]<arr[i]) { int k=i; int tep = arr[原创 2016-09-25 08:05:33 · 1093 阅读 · 0 评论 -
Linux下代码行查询,显示文件树,搜索文件
自己刚学习Linux时,写的一个小工具; 1,查询写了多少行C/C++代码; 2,搜索文件的绝对路径; 3,显示文件树。/*************************** * *链栈static.c * ************************///元素节点typedef struct Node{ char *str; struct Node *nex原创 2016-09-04 18:01:28 · 1049 阅读 · 0 评论 -
二叉树的创建与遍历
#include<iostream>#include<stack>using namespace std;//结构体typedef struct Node{ char data; Node *lchild; Node *rchild;}Node, *Tree;//创建一个结点Node *CreateNode(){ Node*p = new(nothrow原创 2016-09-01 13:36:00 · 956 阅读 · 0 评论