Your browser does not support the audio element.

随笔分类 -  算法与数据结构

经典的算法与数据结构!
摘要:红黑树 简介 一直想写的一种数据结构,非常厉害的思想,插入,删除,查找,修改,都是$log_2 n$的时间复杂度。 比AVL更强大的是,插入删除综合效率比AVL要优秀一点。 性质 一颗红黑树是满足 的二叉搜索树: 1. 每个节点是红色或者黑色的。 2. 根节点是黑色的。 3. 每个叶节点(NIL)是 阅读全文
posted @ 2019-07-17 22:00 happy_codes 阅读(727) 评论(0) 推荐(0)
摘要:思路 二叉排序树,二叉搜索树好像都行,原理应该都懂,比较基础,但要写出来还是有相当大的难度的。 查找 查找比较简单,基本都是一个while就解决。但查前驱与后继较难,可能需要上溯父节点。 任意键值 查最值 查某键值的前驱或后继 先序,中序,后序遍历 修改 修改键 值对,这个非常简单,查找出来即可。 阅读全文
posted @ 2019-06-25 22:41 happy_codes 阅读(195) 评论(0) 推荐(0)
摘要:思路 利用二分思想,划分左右区间,并让左右区间排序完成后,进行合并 C++ include include include using namespace std; define MX 100005 / / int cparr[MX]; /// 归并排序 void mergesort(int arr 阅读全文
posted @ 2019-06-25 10:40 happy_codes 阅读(153) 评论(0) 推荐(0)
摘要:思路 堆的原理就是每个节点保存以自身为根的树的最值。 那么左右子树,根节点也有此性质。 由此,较难的点便是插入与删除的树的调整。 C++ include include using namespace std; define INF 0x3f3f3f3f3f3f3f3f define MX 2000 阅读全文
posted @ 2019-06-25 10:30 happy_codes 阅读(131) 评论(0) 推荐(0)
摘要:思路 思路比较简单,不断划分区间即可 先序遍历的字符串的首字符肯定是树的根节点,而中序遍历的字符串的左右子树肯定被根分割开。 阅读全文
posted @ 2019-06-25 10:11 happy_codes 阅读(316) 评论(0) 推荐(0)
摘要:今天,看了KMP,首先是在网上看的,看了很久没看懂,有很多思想,很多next的推导,就相当于很多的版本,后来,去看了<<大话数据结构>>这本书,才看懂,这KMP的神奇之处,这本书写得很详细,非常好理解,对于KMP的思想,对于next的推导,next的优化,都说得比较好理解。看懂后,才惊觉,网上的很多 阅读全文
posted @ 2017-04-17 11:33 happy_codes 阅读(363) 评论(0) 推荐(0)