![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
红浅
这个作者很懒,什么都没留下…
展开
-
《大话数据结构笔记》--堆排序
堆是具有如下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(如9-7-2左图所示);或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(如9-7-2右图所示)深度为k的满二叉树的结点数n<2k−1n < 2^k -1n<2k−1, 如果对一课有n个结点的完全二叉树的结点按层序编号,对于任意结点i(1<=i<=n)i(1<= i <= n)i(1<=i<=n),有如下:如果i=1i=1i=1,则结点iii是二叉树的原创 2020-06-05 15:55:32 · 165 阅读 · 0 评论 -
《大话数据结构》笔记-赫夫曼树
从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称为路径长度。下图中,根结点到结点D的路径长度为4。*根的路径长度是从树根到每个结点的路径长度之和。*下图树路径长度为1+1+2+2+3+3+4+4=20赫夫曼定义:假设有n个权值{w1,w2,...,wn}\{w_1, w_2, ..., w_n\}{w1,w2,...,wn}, 构造一棵有nnn个叶子结点的二...原创 2020-04-27 16:37:18 · 158 阅读 · 0 评论 -
《大话数据结构》笔记--树、森林与二叉树的转换
树转换为二叉树步骤如下:加线。在所有兄弟结点之间加一条线去线。对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线层次调整。以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。此时第一个孩子是二叉树的左孩子,兄弟转换过来的孩子是结点的右孩子森林转换为二叉树森林由若干棵树组成,所以可以理解为,森林中的每一棵树都是兄弟可以按照兄弟的处理办法,...原创 2020-04-24 11:42:57 · 164 阅读 · 0 评论 -
《大话数据结构》笔记--线索二叉树
利用二叉链表的空地址,存放指向结点在某种遍历下(不同的遍历方法,前驱和后继不同)的前驱和后继的地址,我们把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树线索化的过程我们对二叉树以某种次序遍历使其变为线索二叉树的过程称做是线索化对于如下的二叉链表我们把这棵二叉树进行中序遍历时,得到字符序列: HDIBJEAFCG ,如下图,将上图所有的空指针域...原创 2020-04-24 10:56:34 · 222 阅读 · 0 评论 -
《大话数据结构》-根据遍历结果反推二叉树
了解二叉树几种遍历方法,可参考二叉树遍历根绝二叉树的遍历性质,可以得到两个性质:1. 已知前序和中序遍历序列,可以唯一确定一棵二叉树2. 已知后序和中序遍历序列,可以唯一确定一棵二叉树3. 已知前序和后序遍历序列,无法确定一棵二叉树例题1:已知一棵二叉树的前序遍历序列为ABCDEF,中序遍历序列为CBAEDF,请问这棵二叉树的后序遍历结果是多少?分析: 首先确定根结点,再分别确定左子树...原创 2020-04-23 11:14:46 · 688 阅读 · 0 评论 -
《大话数据结构》--遍历二叉树、树和森林
二叉树的遍历:是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。二叉树的遍历方法前序遍历先访问根结点,然后前序遍历左子树,再前序遍历右子树,如下图,遍历的顺序为:ABDGHCEIF总结:从上而下依次访问左子树,对于右子树比如下图中的H,I, F可以认为越靠左越优先中序遍历从最后一层的左边根结点开始(并不是先访问根结点),先遍历根结点的左子树...原创 2020-04-23 10:22:53 · 173 阅读 · 0 评论 -
《大话数据结构》笔记-二叉树的存储结构
文章目录顺序存储结构二叉链表顺序存储结构可以用一维数组存储二叉树中的结点,并且结点的存储位置也就是数组的下标能体现结点之间的逻辑关系。如下图的完全二叉树:将这棵完全二叉树存入数组中,相应下标对应其同样的位置对于一般的二叉树,可以按照完全二叉树编号,把不存在的结点设置为"^",如下图(浅色结点表示不存在)这种方式对浪费存储空间,所以,顺序存储结构一般只用于完全二叉树二叉链表二叉树...原创 2020-04-22 11:19:27 · 125 阅读 · 0 评论 -
《大话数据结构笔记》--二叉树的定义及性质
定义 : 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集合(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成二叉树特点每个结点最多有两棵子树,所以二叉树不存在度大于2的结点左子树和右子树是有顺序的,次序不能任意颠倒即使树中某结点只有一棵子树,也要区分它为左子树还是右子树二叉树的5种基本形态空二叉树只有一个根结点根结点...原创 2020-04-22 10:56:10 · 730 阅读 · 0 评论 -
《大话数据结构》笔记--树
文章目录树的相关定义度深度(高度)树的存储结构双亲表示法树的相关定义定义:树是n(n>=0)个结点的有限集。n=0称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根的结点2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...,TmT_1, T_2, ..., T_mT1,T2,...,Tm, 其中每一个集合本身又是一颗树,并称为根的子...原创 2020-04-20 15:22:04 · 331 阅读 · 0 评论 -
多数元素
“”"题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3“”"def majority_element(nums) -> int: """ # hash表计数解法 :param nums: ...原创 2020-04-19 16:22:04 · 95 阅读 · 0 评论 -
排序算法(一)
冒泡排序让数组当中相邻的两个元素进行比较,数组当中较小的元素向下沉,较大的元素向上浮.采用两个for循环,外层for循环控制循环次数,内层for循环控制两个相邻元素进行比较.比如:对数组[10, 1, 35, 61, 89, 36, 55]排序第一次排序:10与1比较,1上浮,10下沉,数组变为[1, 10, 35, 61, 89, 36, 55]第2个元素10再与35比较,保持不动第3...原创 2019-11-19 17:29:22 · 85 阅读 · 0 评论