- 博客(8)
- 收藏
- 关注
原创 全国联考2014年
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储,结点结构如下: left weight right 其中叶结点的weight域保存该结点的非负权值 。设root为指向T的根结点的指针,请设计求T的WPL的算法。要求: (1)给出算法的基本思想。 算法的基本思想如下: 采用先序遍历的思想,引用传递参数wpl来记录树的WPL,参数deep用于记录树的每个结点深度,递归实现。 ...
2021-10-27 23:23:52
230
原创 数据结构(7.哈夫曼树)
目录 一、哈夫曼树 二、哈弗曼编码实现 三、总结 一、哈夫曼树 哈夫曼(Huffman)树,又称最优树,是一类带权路径长度最短的树,本文讨论最优二叉树。 下面先介绍其中的一些名词概念。 路径:从树中一个结点到另一个结点之间的分支 路径长度:路径上的分支数 树的路径长度:从树根到每一个叶子结点的路径长度之和 树的带权路径长度:树根到所有带权叶子结点的路径长度之和 构造哈夫曼树的步骤: 1、根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树; 2、在森林中选取两
2021-09-19 02:26:57
1773
原创 数据结构(6.线索二叉树)
遍历二叉树是以一定规则将二叉树中的结点排列成一个线性序列,当以二叉链表作为二叉树的存储结构时,n个结点的二叉树会有n+1个空链域,我们利用这些空链域将遍历二叉树得到的线性序列构造成一个链表,即用空链域表示各结点的前驱和后继,这便是二叉树的线索化。本文介绍中序线索二叉树的构造和遍历代码实现,具体的算法分析过程参见严奶奶的教材吧。 代码里均有注释。代码直接复制可用。 /* 线索二叉树,中序线索化 */ #include<iostream> using namespace s...
2021-09-19 02:24:58
252
原创 数据结构(5.二叉树)
一、树的定义与基本术语 为了对二叉树有更好地理解先简单介绍非线性数据结构-----树型结构。 1、树的定义 树(tree):是n (n≥0) 个结点的有限集T。 在任意一棵非空树中: 1.有且仅有一个特定的结点,称为树的根(root) 2.当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 2、基本术语 ...
2021-08-13 01:09:48
387
原创 数据结构(4.队列)
一、前言 本文将详细介绍队列以及用C++实现队列的封装,代码复制可使用,重点介绍顺序循环队列,链队列只稍加讨论。 二、队列的定义和特点 队列是一种先进先出(First In First Out,FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这与日常生活中排队一样,最早进入队列的元素最先离开。在队列中允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。假设队列为Q = (a1,a2,...,an),那么a1就是队头元素,an则...
2021-08-11 22:02:09
439
原创 数据结构(3.栈)
一、前言 本文主要介绍栈的相关知识以及栈的一些基本操作,文中会给出封装好的顺序栈和链栈代码,直接复制可使用。 一、栈内容简介 栈(stack)是限定仅在表尾进行插入或删除操作的线性表,简单来说就是只能在表尾那个端口进行插入和删除操作,其操作相对于线性表来说更加简单。因此,对栈来说,表尾端称为栈顶(top),表头端称为栈底(botton),不含元素的栈称为空栈。 假设a1,a2,…,an各元素依次进栈,则a1为栈底元素,an为栈顶元素,此时如果进行插入和删除操作(即进栈和退栈)都在栈顶进行,此时退栈的
2021-08-10 20:35:12
350
原创 数据结构(2.单链表)
一、链表内容简介 本篇文章主要介绍单链表,熟练掌握单链表之后,对循环链表、双向链表等稍加学习便能理解了。单链表也是数据结构的地基,直接影响到了后续对树、图等的学习。 链表其实就是线性表的链式存储结构,其特点如下: 逻辑相邻的元素,物理存储上不要求相邻 利用指针实现了元素逻辑相邻 每个元素除了存储本身数据外,还需存储其直接后继的地址 直接上代码,给出结点的存储表示和链表的封装: //链表结点 template <class T>//类模板,T为任意数据类型 struct Nod
2021-08-09 21:58:38
370
原创 数据结构(1.顺序表)
目录 一、顺序表简介 二、顺序表中基本操作简介 1.创建类 2.初始化 3.销毁链表 4.遍历链表 5.取值 6.查找元素 7.插入元素 8.删除元素 总结 一、顺序表简介 顺序表指的是用一组地址连续的存储单元依次存储线性表的数据元素,C语言中通常采用数组来表示。 二、顺序表中基本操作简介 接下来的代码采用C++类模板实现,具体操作参见注释。 1.创建类 template<class T> class SqList { private: T *e...
2021-08-08 18:11:57
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人