数据结构
奶罐
慢慢来
展开
-
数据结构 - 二叉查找树 Binary Search Tree
目录:一、性质二、结点定义三、部分操作插入:唯一键值和重复键值删除:普通删除和懒惰删除四种遍历:先、中、后序、层级四、进一步思考 一、二叉查找树性质 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;树中没有键值相等的节点。 二、结点...原创 2019-02-22 23:31:44 · 602 阅读 · 0 评论 -
数据结构 - 二叉平衡树 AVL Tree
目录1. 平衡条件2. 失衡情景3. 两种旋转3.1 单旋转3.2 双旋转4. 插入、删除4.1 插入4.2 删除5. 完整程序二叉平衡树是基于二叉查找树的基础之上,增加了平衡条件,避免二叉查找树在一定次数的插入/删除操作之后,左右失衡。如果对二叉查找树不了解,可以点击这里。 一、平衡条件 除了二叉查找树的性质,平衡二叉树的每个结点,其左子树和右子树的高...原创 2019-02-23 00:22:14 · 320 阅读 · 0 评论 -
数据结构 - 伸展树 Splay Tree
目录一、什么是伸展树?二、Splay操作的设计模式三、旋转操作讨论四、删除操作五、完整程序 一、什么是伸展树?80-20黄金法则显示,日常中我们80%的访问发生在20%的数据上。如果我们能够把经常访问的节点推到靠近根节点的位置,那么就可以极大的提高访问速度。这就是伸展树的出发点,并实现了以下方案:每次查找节点之后对树进行重构(旋转操作),把被查找的节点搬移到树根。与二叉...原创 2019-02-23 02:34:27 · 789 阅读 · 0 评论 -
C/C++ 数组的定义与初始化
一、普通数组1.1 memset//标准库里memset的源码void *(memset)(void *s, int c, size_t n) { const unsigned char uc = c; unsigned char *su; for (su = s; 0 < n; ++su, --n) *su = uc; ...原创 2019-02-18 21:43:55 · 5545 阅读 · 0 评论 -
数据结构 - 十字链表之稀疏矩阵的存储
当数组中非零元素非常少时,我们可以称之为稀疏矩阵。为了减少空间的浪费,在存储稀疏矩阵的时候,我们对它进行压缩存储,即指存储非零信息。一、数组的顺序存储在存储稀疏矩阵的时候,除了存储非零元素的值,还需要存储其行列号i和j,故每个非零元素要用一个三元组(i, j, v)来描述。因为要与矩阵的对应关系,我们还需要在三元组表中增设非零元素的个数和矩阵行列大小。那么,稀疏矩阵的数组表达如下所示。st...原创 2019-02-19 14:51:33 · 9987 阅读 · 0 评论