![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
喀什酱豆腐
这个作者很懒,什么都没留下…
展开
-
线性表和链表区别
线性表和链表1.线性表是由同一类型的数据元素构成的有序序列的线性结构,相当于一维数组。2.线性表和链表的区别:原创 2019-04-11 22:36:50 · 2899 阅读 · 0 评论 -
平衡二叉树的定义
定义平衡二叉树又称AVL树,它的插入语、删除、查找操作均可在O(log n)的时间内完成。1. AVL树或者是一棵空树,或者是具有下列性质的非空二叉搜索树:(1) 任一结点的左、右子树均为AVL树(2) 根结点左、右子树高度差绝对值不超过12. 对于二叉树中任一结点T,其平衡因子(BF)定义为BF(T)=hl-hr,其中hl和hr分别为T的左、右子树的高度有了平衡因子的定义,AVL树“...原创 2019-05-09 21:07:29 · 5433 阅读 · 0 评论 -
由遍历方法确定二叉树
满足条件:(同时满足)1.至少有两种遍历方法2.必须要有中序遍历由先序遍历和中序遍历确定一棵二叉树由先序遍历可确定根节点,然后再结合中序遍历即可确定左子树和右子树,再按先序遍历的方式分别遍历根节点的左子树和右子数,然后再分别确定左右子树中的根节点,再结合中序遍历确定子树中的左右子树,以此递归下去,最终遍历完所有元素,即可确定二叉树。(由后序遍历和中序遍历的思想相同)例题分析已知二叉树...原创 2019-05-07 17:46:19 · 4459 阅读 · 0 评论 -
编码中关于二义性的解释
避免二义性的关键在于任何一个字符的编码都不能是另一个字符的编码的前缀这句话的理解是:任何一个编码不存在包含关系,如001和0011,从左到右,发现0011的前三个数字001和001相同,这就说明001和0001属于包含关系,所以存在二义性。而001和0001,001不等于000,所以存在包含关系。...原创 2019-05-20 16:10:08 · 1918 阅读 · 0 评论 -
还原二叉树PTA
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5代码:#include<stdio.h>...原创 2019-05-07 21:13:03 · 1489 阅读 · 0 评论 -
最大堆的删除操作代码解释
//最大堆的删除操作 ElementType DeleteMax(MAxHeap H){ int Parent,Child; ElementType MaxItem,X; if(IsEmpty(H)) //判断最大堆是否为空 { printf("最大堆已空"); return ERROR; } MaxItem=H->Data[1]; //取出堆的根结点 X=H-&...原创 2019-05-21 17:50:54 · 553 阅读 · 0 评论 -
建立最大堆代码解释
//将堆分解为由每个父节点所组成的一个个小堆,然后按照删除堆//的处理方法来处理//删除操作代码解析在作者博客里 Viod BuildHeap(MaxHeap H){ int i; for(i=H->Size/2;i>0;i--) //从最后一个父节点开始 PercDown(H,i);//参数传入的是整个堆和每个小堆的根节点(父结点) }Void PercDown(...原创 2019-05-21 18:14:00 · 558 阅读 · 2 评论 -
平衡二叉树旋转法则
新添加元素直接作为叶结点加到对应结点后面原创 2019-05-13 17:04:30 · 208 阅读 · 1 评论 -
DFS在无向图和有向图的区别
https://www.cnblogs.com/qzhc/p/10291430.html原创 2019-06-13 16:34:21 · 2474 阅读 · 0 评论 -
k叉树中叶结点计算公式
k叉树(K>=2)叶结点n0=n2+2n3+3n4+…+(k-1)nk+1原创 2019-06-24 09:09:56 · 2508 阅读 · 0 评论 -
表达式的前后缀转换
形如a*(b+c)-d,第一步先加括号,然后再转化为对应的表达式。( ( a x ( b + c ) ) - d )原则:符号前缀则把符号移到第一个包含自己的括号前,符号后缀则移到括号后前缀:-( x( a +( b c ) ) d ) ----> -xa+bcd后缀: ( ( a ( b c )+ )x d )- ----> abc+x...原创 2019-06-24 09:18:07 · 512 阅读 · 0 评论 -
求二叉树高度PTA
本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;...原创 2019-05-06 21:37:07 · 1482 阅读 · 0 评论 -
二叉树的遍历PTA(详解)
本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:type...原创 2019-05-06 21:34:38 · 12718 阅读 · 2 评论 -
数据结构--线性表必考重点题型(一)--(详解)--PTA
线性表判断题:1.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。()2.对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。()3.在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 ()4.若用链表来表示一个线性表,则表中元素的地址一定是连续的。()...原创 2019-04-26 16:54:08 · 9916 阅读 · 3 评论 -
数据结构--线性表必考重点题型(二)--(详解)--PTA
线性表选择题:1.设有一个 12×12 的对称矩阵M,将其上三角部分的元素mi,j(1≤i≤j≤12)按行优先存入C语言的一维数组N中,元素m6,6在N中的下标是()A.50 B.51 C.55 D.662.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间()A.单链表B.仅有尾指针的单循环链表C.仅有头指针的单循环...原创 2019-04-26 17:39:22 · 14752 阅读 · 0 评论 -
数据结构之数的定义、表示和术语
数定义性质术语结点的度数的度叶结点父节点子节点兄弟结点祖先结点结点的层次数的深度和数的高度分支路径和路径长度定义官方说法数是n(n>=0)个结点构成的有限集合。当n=0时成为空树。其实数就是类似与树枝的一种数据结构组织类型。性质1.数中有一个称为“树根”(Boot)的特殊结点,用r表示,这就类似于每个数只有一个树根。2.其余结点可以划分为m个不相交的子集T1,T2,···,Tn。...原创 2019-04-28 17:31:59 · 793 阅读 · 0 评论 -
数据结构之二叉树的定义
二叉树定义及其逻辑表示定义逻辑表示性质定义及其逻辑表示定义一个二叉树是一个又穷的结点集合。这个集合可以为空,若不为空,则它是由根节点和成为其左子树和右子树的两个不相交的二叉树组成。逻辑表示下面是二叉树常见的五种基本形态:性质二叉数的深度小于等于结点数N,可以证明平均深度是O(√n)。如图所示,写斜二叉树也称为退化二叉树,斜二叉树结构最差,深度达到最大N,它已退化为线性表。在一棵二叉...原创 2019-04-28 18:11:44 · 1023 阅读 · 1 评论 -
二叉树的存储结构类型
存储结构类型1。顺序存储结构描述对象特点步骤优点缺点二叉树的链表存储1。顺序存储结构描述这种结构是用一组连续的存储单元(比如数组)存储二叉树结点的数据,其结点的父子关系是通过他们相对位置来反映的,而不需要任何附加的存储单元来存放指针。对象通常情况下用于完全二叉树的存储。特点从数的根结点开始,从上到下,从左到右,一次给结点编号并将数据存放到一个数组的对应单元中。步骤概括起来,在N...原创 2019-05-05 17:04:37 · 1004 阅读 · 0 评论 -
二叉树的操作(一)
二叉树的操作二叉树的遍历中序遍历先序遍历后序遍历层序遍历二叉树叶结点的输出算法二叉树的高度算法二叉树的遍历中序遍历它是指对树中任一结点的访问实在遍历玩其左子树后进行的,访问此结点后,再对其右子数遍历。其遍历过程为:1.中序遍历其左子树2.访问根结点3.中序遍历其右子树代码:void InorderTraversal(BinTree BT){ if(BT) { Inorde...原创 2019-05-05 17:35:14 · 173 阅读 · 0 评论 -
堆的定义
堆定义操作的时间复杂度1.普通数组2.有序数组3.普通链表4.有序链表性质最大堆和最小堆堆结构定义我们知道,队列的特点是“先进先出“,但如果队列中的某些元素需要先出即“插队”的话,队列无法满足这种要求,于是提出了堆的概念。堆也称为“优先队列”,是一种特殊的队列,从堆中取出元素是依照元素的优先级大小,而不是进入队列的先后顺序。操作的时间复杂度1.普通数组插入的时间复杂度为O(1),删除元...原创 2019-05-13 18:07:59 · 2323 阅读 · 0 评论 -
二叉搜索树的定义及相关操作
二叉搜索树定义操作二叉搜索树的查找操作Find查找最大和最小元素二叉搜索树的插入二叉搜索树的删除定义二叉搜索树(BST)是一棵特殊的而擦函数,可以为空,它满足一下性质:1. 非空左子树的所有键值小于其根结点的键值2. 非空右子树的所有键值大于其根结点的键值3. 左、右字数都是二叉搜索树操作二叉搜索树的查找操作Find递归实现Position Find(BinTree BST, E...原创 2019-05-08 21:27:44 · 375 阅读 · 0 评论 -
完全二叉树在数组中存储时父亲与孩子的下标关系
N个结点的完全二叉树中,对于下标为 i 的结点:1.当i/2取整>=1 时,i/2取整单元是其父结点;当i/2取整=0时,表明该结点是数的根节点,无父结点2.当2i<=N 时,2i单元是其左孩子;否则无左孩子3.当2i+1<=N 时,2i+1 单元是其右孩子;否则无右孩子(前提:数组其实单元下标是1)...原创 2019-05-13 20:31:01 · 3473 阅读 · 0 评论 -
是否二叉搜索树PTA
本题要求实现函数,判断给定二叉树是否二叉搜索树。函数接口定义:bool IsBST ( BinTree T );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree...原创 2019-05-08 23:35:55 · 1119 阅读 · 2 评论 -
用单向链表表示堆栈要点
注意:只能将表头作为栈顶如果用表尾作为栈顶,出栈后将无法找到前一个结点,因为是单向。原创 2019-06-24 21:12:01 · 965 阅读 · 0 评论