数据结构
文章平均质量分 71
使用C/C++完成本科期间需要掌握的基本数据结构、经典习题,先熟练造轮子再用技巧解题。资料来自浙江大学数据结构课程,习题来自浙大PTA OJ平台
htguyftg
前端小菜鸡
展开
-
浙大数据结构-堆和优先队列
一、优先队列优先队列(Prior Queue):特殊的“队列”,取出元素的顺序是以招元素的优先权(关键字)大小,而不是元素进入队列的先后顺序数组或链表实现优先队列 插入——元素总是插入尾部 Θ(1) 数组 删除——查找最大(或最小)关键字 Θ(n) 移动数组元素后删去 O(n) 插入——元素总是插入头部 Θ(1) 链表 删除——查找最大(或最小)关键字 Θ...原创 2021-04-17 11:18:47 · 188 阅读 · 0 评论 -
浙大数据结构-5.2 Huffman Tree & Huffman Code
哈夫曼树的定义带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子节点带有权值wk,从根节点到每个叶子结点的长度为lk,则每个叶子节点的带权路径长度之和最优二叉树或哈夫曼树:WPL最小的树实际意义:根据结点不同的查找频率构建更有效的搜索树哈夫曼树的构造每次把权值最小的两棵二叉树合并...原创 2021-04-16 14:45:38 · 360 阅读 · 1 评论 -
浙大数据结构-二叉树的遍历算法及拓展
1.递归版本1.先序遍历访问根结点 先序遍历左子树 先序遍历右子树typedef struct TreeNode *BinTree;typedef struct{ int Data; BinTree lchild; BinTree rchild; } TreeNode;void PreOrderTraversal( BinTree BT){ if( BT ){ printf("%d", BT->Data); PreOrderTraversal( BT->lc原创 2021-04-14 21:30:28 · 269 阅读 · 0 评论 -
浙大数据结构-二叉树基础
二叉树的定义二叉树T:一个有穷的结点集合,此集合可以为空,若不为空,则它是由根节点和左子树TL、右子树TR两个不相交的二叉树组成二叉树的子树有左右顺序之分 每个结点的度为0,1,2 二叉树有五种基本结构:空,只有根结点,只有左子树,只有右子树,左右子树均存在特殊二叉树斜二叉树(Skewed Binary Tree):只存在左子树或右子树完美二叉树(Perfect Binary Tree)/满二叉树(Full Binary Tree):所有分支结点都有左右孩子,且叶子结点都集中在最下一.原创 2021-04-13 15:31:33 · 248 阅读 · 0 评论 -
数据结构-树的基础知识
树的定义n(n>=0)个结点构成的有限集合,非线性数据结构,n=0时为空树对于任意一棵非空树具备以下性质:有一个Root,用r表示其余结点可分为m个互不相交的有限集T1,T2, ... ,Tm,其中每个集合本身又是一棵树,称为原来树的子树SubTree判定树与非树?子树不相交除了根结点外,每个节点有且仅有一个父结点一棵N个结点的树有N-1条边树是保证结点连通的最少边的方式树的基本术语结点的度(degree):结点的子树个数树的度:数的所有结点中最大的度数原创 2021-04-13 14:50:40 · 1509 阅读 · 0 评论 -
数据结构-5.3集合及运算
集合的表示集合运算:交、并、补、差,判定一个元素是否属于某一集合 并查集:集合并、查某元素属于什么集合 并查集问题中集合存储如何实现?链式存储:树结构表示集合,树的每个结点代表一个集合元素 顺序存储:用数组表示集合运算查找某个元素所在的集合(用根节点表示)集合的并运算分别找到x1和x2两个元素所在的集合的根节点 判断是否同根:同根则不做改变;不同根则将其中一个根节点的父节点指针设置成另一个根节点的数组下标...原创 2021-04-12 11:09:16 · 477 阅读 · 0 评论