数据结构+算法
sky_Mata
这个作者很懒,什么都没留下…
展开
-
链表面试题总结----(可能带环相交问题+复杂链表的复制)
1.顺序表和链表的优缺点以及适应场景2.逆置单链表3.从尾到头打印单链表4.无头单链表的非尾结点5.判断两个个链表是否相交(不带环)6.判断一个链表是否带环7.判断两个链表是否相交(可能带环)8.复杂链表的复制原创 2017-07-16 22:58:58 · 875 阅读 · 0 评论 -
BTree的插入和查找算法分析
1.什么叫BTree?一种适合外查找的树,它是一种平衡的多叉树,称为B树(或写成B-树,但是不能误读为“B减树”)。2.BTree的性质 一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树或者满足一下性质:1. 根节点至少有两个孩子(孩子为NULL也算作孩子的数量)2. 每个非根节点有[M/2,M]个孩子(注意孩子与关键字的关系,n个key,n+1孩子)3.原创 2017-06-27 09:47:31 · 2405 阅读 · 0 评论 -
通过图文来理解快速排序的过程
1.快排的基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.快排的三种实现方式2.1左右指针法代码实现:int PartSort(int* a,int left,int right){ if (left原创 2017-07-03 21:07:11 · 393 阅读 · 0 评论 -
最优二叉树--哈夫曼树和最优前缀编码--哈夫曼编码
1.最优二叉树的定义最优二叉树又称哈夫曼树,是一种带权路径长最短的树。树的路径长度是从树根到每一个叶子之间的路径长度之和。节点的带树路径长度为从该节点到树根之间的路径长度与该节点权(比如字符在某串中的使用频率)的乘积。2.构造哈夫曼树2.1贪心算法贪心算法(又称贪婪算法)是指,在对 问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部 最优解。原创 2017-05-18 11:56:25 · 21360 阅读 · 0 评论 -
红黑树(RBTree)的插入算法以及如何测试一棵树是否是红黑树?(详细图解说明)
红黑树的插入数据时,什么时候该调整,什么时候不用调整,什么时候需要旋转,该怎样调节结点的颜色呢?以及如何判断一棵树是否是红黑树,超级详细的图解过程!!!原创 2017-06-02 22:54:49 · 5289 阅读 · 0 评论 -
AVL树(高度平衡的二叉搜索树)平衡因子的调节和旋转
1.什么叫AVL树? AVL树又称为高度平衡的二叉搜索树,它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度(尽量使这棵树保持为完全二叉树,这样就能提高搜索效率)。2.AVL树的性质 (1)左子树和右子树的高度之差的绝对值不超过1 (2) 树中的每个左子树和右子树都是AVL树原创 2017-05-31 22:47:36 · 5611 阅读 · 2 评论 -
二叉树的定义和递归实现
递归创建二叉树,递归过程分析;树的基本概念;二叉树的性质;递归实现二叉树的先序、中序、后序、层序遍历;递归求二叉树的深度;递归求二叉树的结点个数;递归求二叉树叶子结点个数;以及递归实现求第k层结点的个数。原创 2017-05-05 21:43:23 · 5855 阅读 · 0 评论 -
子数组最大累加和+子矩阵的最大和+子数组累加和为给定值的最大子数组长度
1.如何求一个子数组的最大累加和?(时间复杂度O(N))2.如何求两个子数组的最大累加和?(要求两个子数组无重合的部分,时间复杂度O(N))3.未排序的正数数组中累加和为给定值的最长子数组长度(时间复杂度O(N))3.给定一个无序矩阵,其中有正,有负,有 0,求子矩阵的最大和原创 2017-07-01 09:40:59 · 653 阅读 · 0 评论