数据结构
数据结构分享交流
ppaaaaaaa
这个作者很懒,什么都没留下…
展开
-
通过前、中、后序遍历序列中的任意两个构造二叉树【Java实现】
二叉树的前序、中序和后序遍历是二叉树学习中的一个重点,也是二叉树中很基础的一部分,需要我们熟练的运用;通常已知二叉树,很多同学都能很轻松的得到其前序、中序和后序遍历的队列,甚至层序遍历也不在话下,如果是反过来呢?如果是理解不够的同学就会觉得头疼,有点不知道怎么下手,这里我将分享一下我的汇总,可能方法不是最优的,但是一定能帮助理解。在此之前呢,我们需要再回顾一下二叉树的前序、中序和后序遍历的特点;前序遍历:遍历后的序列中节点按照[ 根节点 | 左子树 | 右子树 ]排序,以上图所示为例[ 1 .原创 2020-05-20 13:56:13 · 586 阅读 · 2 评论 -
循环队列的相关条件和公式
已知图个循环队列,队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度;则:队空条件:rear==front 队满条件:(rear+1)%QueueSize==front 计算队列长度:(rear-front+QueueSize)%QueueSize 入队:(rear+1)%QueueSize 出队:(front+1)%QueueSize...原创 2020-05-12 21:21:09 · 501 阅读 · 0 评论 -
数据结构查找算法
查找算法查找表是由同一类型的数据元素构成的集合。 静态查找表和动态查找表: 静态查找表:在查找表中只做查找操作,而不改动表中的数据元素 动态查找表:在查找表中做查找操作的同时还进行插入数据和删除数据的操作 平均查找长度(SAL):查找成功时,查找的关键字和查找表中的数据元素中进行过比较的个数的平均值 对于具有 n 个数据元素的查找表,查找成功的平均查找长度的计算公式为: Pi 为第 i 个元素被查找的概率;Ci 表示在查找第 i 个元素之前已经进行过比较的次数1、顺序查找.原创 2020-05-10 09:35:44 · 949 阅读 · 0 评论 -
数据结构之B-树、B+树
1、B-树一颗 m 阶的 B-树,或者本身是空树,否则必须满足以下特性: 树中每个结点至多有 m 棵子树; 若根结点不是叶子结点,则至少有两棵子树; 除根之外的所有非终端结点至少有棵子树; 所有的非终端结点中包含下列信息数据:(n,A0,K1,A1,K2,A2,…,Kn,An); n 表示结点中包含的关键字的个数,取值范围是:⌈m/2⌉-1≤ n ≤m-1。Ki (i 从 1 到 n)为关键字,且 Ki < Ki+1 ;Ai 代表指向子树根结点的指针,且指针 Ai-1 所指的子树原创 2020-05-10 09:35:09 · 409 阅读 · 0 评论 -
数据结构查找算法之红黑树
基本概念红黑树,本身是一棵二叉查找树,在其基础上附加了两个要求: 树中的每个结点增加了一个用于存储颜色的标志域; 树中没有一条路径比其他任何路径(指的是从任何一个结点开始,一直到其子孙的叶子结点的长度)长出两倍,整棵树要接近于“平衡”的状态。 红黑树对于结点的颜色设置不是任意的,需满足以下性质的二叉查找树才是红黑树: 树中的每个结点颜色不是红的,就是黑的; 根结点的颜色是黑的; 所有为 nil 的叶子结点的颜色是黑的;(注意:叶子结点说的只是为空(nil 或 NULL)的叶子结点!原创 2020-05-09 16:10:16 · 325 阅读 · 0 评论 -
数据结构查找算法之平衡二叉树【附Java代码实现,图解】
平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 平衡因子:每个结点都有其各自的平衡因子,表示的就是其左子树深度同右子树深度的差。平衡二叉树中各结点平衡因子的取值只可能是:0、1 和 -1。 二叉排序树转化为平衡二叉树;当平衡二叉树由于新增数据元素导致整棵树的平衡遭到破坏时,就需要根据实际情况做出适当的调整,假设距离插入结点最近的“不平衡因子”为 a。则调整的规律可归纳为以下 4 种情况原创 2020-05-09 10:36:03 · 362 阅读 · 0 评论 -
数据结构查找算法之二叉查找树(二叉排序树)【附Java代码实现,图解】
基本思想:二叉查找树是先对待查找的数据进行生成树,确保树的左分支的值小于右分支的值,然后在就行和每个节点的父节点比较大小,查找最适合的范围。 这个算法的查找效率很高,但是如果使用这种查找方法要首先创建树。 二叉查找树或者是空树,或者是具有以下特征: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树。 复杂度分析:它和二分查找一样,插入和查找的时间复杂度均为O(l原创 2020-05-08 22:13:23 · 1233 阅读 · 0 评论 -
数组地址计算
1、一维数组设数组为A = a1,a2,a3,a4…ai…an;每个数据元素占d个存储单位,则元素a[i]的存储地址为Loc(A[i])=Loc(A[1])+(i−1)∗dLoc(A[i])=Loc(A[1])+(i−1)∗dLoc(A[i]) = Loc(A[1]) + (i-1)*dLoc(A[i])=Loc(A[1])+(i−1)∗dLoc(A[i])=Loc(A[1])+(i−1...原创 2020-05-07 10:17:36 · 4535 阅读 · 1 评论