数据结构与算法
第一系列 算法+数据结构(第01篇)走下神坛吧!算法 算法+数据结构(第02篇)玩扫雷就是优化算法 算法素颜(第03篇):KO!大O——时间复杂度 算法+数据解构(第04篇)空间复杂度你真的懂了吗? 算法+数据结构(第05篇)走下神坛吧!算...
第一系列 算法+数据结构(第01篇)走下神坛吧!算法 算法+数据结构(第02篇)玩扫雷就是优化算法 算法素颜(第03篇):KO!大O——时间复杂度 算法+数据解构(第04篇)空间复杂度你真的懂了吗? 算法+数据结构(第05篇)走下神坛吧!算...
引言 上一篇文章《精通二叉树的“独门忍术”——线索二叉树(上)》提到了线索二叉树的改良,并给出了改良后的“中序遍历”“前序遍历”线索二叉树的定义。本文就来谈谈改良后的“前序遍历”的线索二叉树的转换与遍历算法。 非递归型算法 既然《精通二叉树...
引言 二叉树的叶子节点的孩子都是空节点(Null),如果展开显示,如下图: 图 1 原始二叉树 二叉树的遍历方法,有“前序遍历”“中序遍历”和“后序遍历”三种。 “前序遍历”的规则: 先访问当前节点,再访问其左子树,最后访问右子树; 访问子...
引言 在上一篇《无死角“盘”它!二分查找树》中提到了:平衡二叉树的目的就是使得平均查找长度最短。那么这里就引出两个问题: 什么是平衡二叉树? 为什么平衡二叉树的平均查找长度最短? 如何将非平衡二叉树调整成平衡二叉树? 1. 平衡二叉...
引言 《菜鸟也能“种”好二叉树!》一文中提到了:为了方便查找,需要进行分层分类整理。而满足这种目标的数据结构之一就是树。 树的叶子节点可以看作是最终要搜寻的目标物;叶子节点以上的每一层,都可以看作是一个大类别、层中的每个节点都可以看作是一个...
引言 上一篇文章《菜鸟也能“种”好二叉树!》提到:树是一种分层分类的数据结构,用途是查找和排序。而与查找和排序密切相关的就是求最值(最大值或者最小值)。今天我们就来介绍一个与最值相关的数据结构——二叉堆。 尽管网上或者相关的算法书均有对二叉...
>引言 在本系列第5篇《小白也能玩转数组和链表啦!》中,给出了常用数据结构的全貌图: 本文就来讲讲“树”这个数据结构。 1. 树的本质是什么? 本系列第2篇《扫雷还可以这样玩》中提到了算法问题的基本类型——搜索、排序、规划、计算。其...
本系列的第6篇《再不会“降维打击”你就Out了!》讲述了递归算法的意义、套路,第7篇《神力加身!动态编程》讲述了递归算法的优化,但是在大量的实际项目、工程和大家关心的求职面试中,却会碰到大量消除递归的需求。于是产生了两个问题: 1....
引言 在上篇文章《再不会”降维打击”你就Out了!》中,提到了递归算法的两个局限性。本文给出解决方案——动态编程。如果说”递归算法”是圣剑的话,那么”动态编程”就是圣衣...
引言 刘慈欣的《三体》不仅让中国的硬科幻登上了世界的舞台,更是给广大读者普及了诸如“降维打击”之类的热门概念。 “降维打击”之所以给人如此之震撼,在于它以极简的方式,从更高的、全新的技术视角有效解决了当前困局。 那么在算法的世界中,是否存在...