![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与leetcode
至尊灬宝
为学日益,为道日损
展开
-
二叉树的遍历(递归和非递归的实现)
一.二叉树的遍历(先序,中序,后序)的递归实现实现二叉树的递归其实很简单,只要理解了二叉树的递归系统压栈是怎么压的,所谓的先序,中序,后序遍历的区别其实就是打印的时机的问腿而已了。系统会把每一个节点压栈三次,打印第一次就是先序遍历,打印第二次就是中序遍历,打印第三次就是后序遍历。下面上代码:void proder(TreeNode* root){if(root==nullpt...原创 2018-10-16 22:16:45 · 162 阅读 · 0 评论 -
二叉树的Zigzag遍历
是什么是Zigzag遍历,简单点说就是层序遍历的升级版,首先,我们要设置一个LefttoRight的bool变量,通过一个bool变量来控制当前层是从左往右压还是从右往左压。当然,在这里我还对之前的层序遍历进行了进一步的更新:vector<vector<int>> ZigzaglevelOrder(TreeNode* root){ vector<ve...原创 2018-11-07 11:30:18 · 890 阅读 · 0 评论 -
多数投票算法
多数投票算法是一种用O(1)的空间复杂度,来求出数组中众数的算法:其实这个算法十分好理解,最直观的说,我们要再数组中找到大于n/k的数,首先我们要明白一件事,举个例子,k=2,这时候,整个数组中比n/2还要多的数只有可能是一个,而k=3时,数组中比n/3还要多的数最多也只能有两个,同理可得,当为k的时候,数组中出现这种元素的个数最多只有可能有k-1个。所以,到这里,我们可以设k-1个候选人...原创 2018-11-11 00:48:01 · 3140 阅读 · 1 评论 -
对蓄水池算法的解析和应用
今天写一个10万个数据的消息队列,对里面的数据输入和输出感觉并没有达到完全随机的地步,这让我想起了我之前学习过的蓄水池算法,然后就自己手撸了一个感觉比较满意的随机池。蓄水池算法:所谓的蓄水池算法,其实很简单:先给一个概念一个很大的文件,我要随机取其中的某一行,先选第一行,然后第二行以1/2的几率决定要不要替换第一行,第三行以1/3的几率要不要替换,直到最后一行,然后每一行的几率都是一样的。...原创 2018-11-25 01:38:49 · 403 阅读 · 0 评论 -
二叉搜索树的删除和插入操作
最近在复习红黑树,红黑树实现的代码实在是过多,插入又要左旋右旋,又要变颜色什么的,这里我先对二叉搜索树的操作进行回忆和整理,然后在是avl,再到红黑树。对于二叉搜索树,构建一颗二叉搜索树和查找二叉搜索树中的某个值都是十分简单的操作,在这里主要写一下二叉搜索树的删除和插入操作,当然这其中的操作,肯定是二叉搜索树的删除操作显得更加复杂一点:删除remove:对于删除操作,主要就是主要一下几...原创 2018-12-05 00:21:05 · 237 阅读 · 0 评论 -
各种排序的深入和对不同数据的处理的性能分析(二)
延续上一篇博客,上一篇讲了排序算法O(n2)的算法和优化,还有针对什么情况下的数据什么排序更有效的问题的详解,今天来谈谈看O(nlogn)的排序的实现和优化,以及对应的数据情况分析。第一:归并排序:归并排序的算法思路就是:分而治之,先划分成小数组,然后再两两合并,最后合并成一个最终的数组。下面个代码实现:void megre(int a[],int first,int mid,i...原创 2018-12-13 22:32:06 · 202 阅读 · 0 评论