随笔分类 -  数据结构

仅部分数据结构代码实现
树的基本性质
摘要:满二叉树是一棵完美平衡的二叉树 完全二叉树是一棵二叉树,除了最后一层外,其他层的节点都是满的,且最后一层的节点都靠左排列 平衡二叉树的任意节点的左子树和右子树的高度差不超过1 阅读全文

posted @ 2023-10-17 21:42 四马路弗洛伊德 阅读(39) 评论(0) 推荐(0)

中缀表达式转前后缀表达式
摘要:将中缀表达式a/(b+c*d)-e/f转换为后缀表达式的步骤如下:1. 创建一个空栈和一个空字符串,用于存储结果。2. 从左到右遍历中缀表达式的每个字符: - 如果是操作数(字母或数字),直接添加到结果字符串中。 - 如果是操作符: - 如果栈为空,或者栈顶操作符为左括号"(",则将当前操作符入栈。 阅读全文

posted @ 2023-10-17 21:25 四马路弗洛伊德 阅读(129) 评论(0) 推荐(0)

哈希函数
摘要:除留余数法是一种常用的哈希函数方法,用于将关键字映射到哈希表中的索引位置。在除留余数法中,可以使用以下公式计算哈希值:哈希值 = 关键字 % p p是不大于L或等于L的质数其中,关键字是要进行哈希映射的值,哈希表大小是哈希表的长度,哈希值是最终计算得到的索引位置。装填因子是n,一共有m个关键字。装填 阅读全文

posted @ 2023-10-17 21:06 四马路弗洛伊德 阅读(218) 评论(0) 推荐(0)

求叶子结点个数
摘要:递归求叶子结点个数 背 #include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *lchild,*rchild; }TreeNode,*Tree; void CreateTree(Tree & 阅读全文

posted @ 2023-10-16 19:46 四马路弗洛伊德 阅读(57) 评论(0) 推荐(0)

144-18 中序创建线索二叉树
摘要:同理,先序创建线索二叉树只需要将InThread中的某部分调换位置 死记硬背 #include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *lchild,*rchild; int lefttag, 阅读全文

posted @ 2023-10-16 19:22 四马路弗洛伊德 阅读(31) 评论(0) 推荐(0)

144-17
摘要:判断两树相似,相似是指,两个树都存在对应的左子树或右子树 递归方法 当两个结点都是空时:return 1; 当两个结点有一个为空时:return 0; 当两个都不为空时,开始递归,并返回左右子树的&&值 #include <stdio.h> #include <stdlib.h> typedef s 阅读全文

posted @ 2023-10-15 19:36 四马路弗洛伊德 阅读(36) 评论(0) 推荐(0)

144-16
摘要:设计一个算法,将二叉树的叶结点按从左到右的顺序连成一个单链表,表头指针为Head,二叉树按照二叉链表方式存储,链接时用叶结点的右指针域来存放单链表指针。 只需要找到叶子节点,然后将第一个叶子节点赋值给Head,其余的叶子结点按照顺序使用自己的右指针连接起来 #include <stdio.h> #i 阅读全文

posted @ 2023-10-15 19:31 四马路弗洛伊德 阅读(53) 评论(0) 推荐(0)

144-15
摘要:对满二叉树,知其先序序列,求后序序列 直接背代码吧,反正也不难 #include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *lchild,*rchild; }TreeNode,*Tree; vo 阅读全文

posted @ 2023-10-13 22:01 四马路弗洛伊德 阅读(45) 评论(0) 推荐(0)

144-14
摘要:求树宽 与非递归求树高相同,只不过是将high++变成了最大值的判断 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct node{ int data; struct node *lchild,*rchi 阅读全文

posted @ 2023-10-13 20:47 四马路弗洛伊德 阅读(82) 评论(0) 推荐(0)

144-13
摘要:给定结点p,q,在二叉树中找到两结点最近的祖宗结点 1. 首先,检查当前节点T是否为空,或者是否等于节点p或节点q。如果是,直接返回当前节点T,表示找到了p或q节点,或者已经遍历到叶子节点。2. 如果当前节点T不满足上述条件,则递归地处理左子树和右子树。3. 在左子树中递归调用`ANCESTOR`函 阅读全文

posted @ 2023-10-12 22:04 四马路弗洛伊德 阅读(45) 评论(0) 推荐(0)

144-12
摘要:在二叉树中查找值为x的结点,找出该结点所有的祖宗结点,值为x的结点个数不多于1个 利用二叉树的后序非递归遍历,在Pop函数后判断是否结点值是否等于x,若等于,栈中全是x的祖宗结点,依次弹出 #include <stdio.h> #include <stdlib.h> #define MaxSize 阅读全文

posted @ 2023-10-12 21:01 四马路弗洛伊德 阅读(46) 评论(0) 推荐(0)

144-11
摘要:给定二叉树,删除结点值为x的左右子树 利用层次遍历找到结点值为x的左右子树,分别删除; 删除算法 void Delete(Tree &T) { if(T) { Delete(T->lchild); Delete(T->rchild); free(T); } } 完整算法 #include <stdi 阅读全文

posted @ 2023-10-11 22:03 四马路弗洛伊德 阅读(58) 评论(0) 推荐(0)

144-10 感觉有点难
摘要:二叉树使用二叉链表存储,求先序序列中第k个结点的值 首先明确先序遍历是根-左-右,使用递归算法,先左子树,后右子树。 为了防止在找到第k个结点之前就进入右子树的遍历,可以在递归调用时,将左子树的返回值存储在一个变量中,并进行判断。 如果左子树的返回值不等于特定的值(例如-1),则表示已经找到第k个结 阅读全文

posted @ 2023-10-11 21:42 四马路弗洛伊德 阅读(38) 评论(0) 推荐(0)

144-9
摘要:链式存储的二叉树,交换左右结点位置 递归 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct node{ int data; struct node *lchild,*rchild; }TreeNode, 阅读全文

posted @ 2023-10-11 20:55 四马路弗洛伊德 阅读(33) 评论(0) 推荐(0)

143-8
摘要:二叉树采用二叉链表存储,计算给定二叉树的所有双分支结点个数 递归思想 当根结点不存在左右结点时,return 0; 当根节点存在左右结点时,return Count(T->lchild)+Count(T->rchild)+1; 当根节点只存在一个结点时,return Count(T->lchild) 阅读全文

posted @ 2023-10-11 20:47 四马路弗洛伊德 阅读(34) 评论(0) 推荐(0)

143-7
摘要:树结点由二叉链表存储,判定给定的树是否是完全二叉树 用到了辅助队列 只要出队的结点非空,就将其左右结点入队,无论左右结点是否为空。 若出队的结点为空,就让队列结点依次出队,若存在非空结点,就说明树不是完全二叉树。 #include <stdio.h> #include <stdlib.h> #def 阅读全文

posted @ 2023-10-11 20:28 四马路弗洛伊德 阅读(32) 评论(0) 推荐(0)

143-6
摘要:二叉树的结点值各不相同,先序序列和中序序列分别存储在数组A和B中,设计算法构建二叉树 使用递归 1、使用指针传入数组,方便进行根节点操作。 TreeNode* BuildTree(int *A,int Alen,int *B,int Blen) T->lchild=BuildTree(A+1,ind 阅读全文

posted @ 2023-10-10 21:39 四马路弗洛伊德 阅读(33) 评论(0) 推荐(0)

143-5
摘要:非递归求树高,包括递归求树高 current记录每次入队出队操作后队列中结点数,每一个结点出队时--,每一个结点入队时++ previous记录每层结点数,出队操作时-- 当previous==0时,即队列中不存在该层结点且当前队列中是下一层结点。此时,high++。让previous=curren 阅读全文

posted @ 2023-10-10 20:57 四马路弗洛伊德 阅读(36) 评论(0) 推荐(0)

143-4
摘要:二叉树自下而上,从右到左的层次遍历算法 相较于普通的层次遍历,该算法,只是利用栈的特点,将一系列元素反转。 层次遍历的每一个结点依次进栈,最后再将依次出栈 #include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struc 阅读全文

posted @ 2023-10-09 22:06 四马路弗洛伊德 阅读(25) 评论(0) 推荐(0)

TreeAPI 递归和非递归遍历
摘要:只包含递归和非递归遍历 #include <stdio.h> #include <stdlib.h> #define MaxSize 20 typedef struct node{ int data; struct node *lchild,*rchild; }TreeNode,*Tree; typ 阅读全文

posted @ 2023-10-09 21:34 四马路弗洛伊德 阅读(37) 评论(0) 推荐(0)

导航