数据结构与算法分析
文章平均质量分 60
鸟临窗语报天晴
正则表达式不是万能的,有穷自动机才是万能的。
博客已迁移至nathanli.tech
展开
-
伸展树的概念及C++实现
伸展树的概念伸展树是一种二叉树,它能够保证M次操作最多花费O(M log N)的时间,即摊还代价(即平分到每一次操作的代价)为O(log N)。前面的博客讲过了的AVL树:浅析AVL树–AVL树的概念及单旋转浅析AVL树–AVL树的双旋转浅析AVL树–AVL树的C++实现AVL树能够保证每一次操作后树都会平衡(即任意结点左右子树最多差1)在《数据结构与算法分析》一书中有这么一段话:...原创 2020-02-29 12:47:12 · 360 阅读 · 0 评论 -
浅析AVL树--AVL树的双旋转
潜析AVL树–AVL树的双旋转接上篇博文:简析AVL树–AVL树的概念及单旋转AVL树如何恢复平衡之双旋转首先假设我们有一颗已经处于平衡的AVL树:上篇博文已经解决了LL和RR两种情况的平衡恢复解决方案----单旋转。这篇博文来看双旋转情形。这时候我们插入结点7,我们可以发现这时这棵树并没有失去平衡:但是,如果我们继续插入结点8,这棵树就会再次处于失衡状态:我们首先可以发现结点9...原创 2020-02-19 17:19:53 · 772 阅读 · 1 评论 -
浅析AVL树--AVL树的C++实现
AVL树的C++实现基于前两篇博文:简析AVL树–AVL树的概念及单旋转潜析AVL树–AVL树的双旋转可以写出AVL的C++实现如下:首先是AVL树的定义:File avltree.hclass AVLTree {public: struct node; typedef struct node* NodePointer; AVLTree(int d); void init...原创 2020-02-19 17:19:35 · 276 阅读 · 0 评论 -
浅析AVL树--AVL树的概念及单旋转
什么是AVL树?AVL树是一种带有平衡条件的查找二叉树。一般来说,要求一棵AVL树的左右子树高度最多相差1。如下图所示,下面是一个平衡了的AVL树,它的每一个结点的左右子树高度最多相差1。当我们插入了新结点1之后,这棵就不是平衡二叉树了,因为它的根节点左右子树高度相差2:我们可以观察到之所以引起了不平衡是因为新插入的结点1破环了根节点的平衡性,使得根节点左右子树相差2。对于上述的情况,我...原创 2020-02-19 15:27:28 · 366 阅读 · 1 评论 -
算法分析基础学习笔记
算法分析基础学习笔记 复杂度是个神马东西 复杂度分为时间复杂度和空间复杂度。 ̄ω ̄= 复杂度这个玩意是用来表征某段程序的运行效率的。程序的运行效率的具体表现形式又分为该程序运行时解决问题所用时间多少和所用内存大小。其中,解决问题所用时间多少的数量级被抽象为时间复杂度,一般来说,时间复杂度越小越好,所代表的的时间需求就越少;原创 2017-08-10 20:40:39 · 3589 阅读 · 0 评论