随笔分类 - 数据结构与算法
摘要:@[toc] 一、平衡二叉树定义 平衡二叉树又称AVL树 。它可以是一颗空树,或者具有以下性质的 二叉排序树 :它的左子树和右子树的高度之差(平衡因子)的绝对值不超过1且它的左子树和右子树都是一颗平衡二叉树。 从上面简单的定义我们可以得出几个重要的信息: 平衡二叉树 又称 AVL树 平衡二叉树必须是
阅读全文
摘要:前言 在 "【算法04】树与二叉树" 中,已经介绍过了关于树的一些基本概念以及二叉树的前中后序遍历,而这篇文章将是在二叉树的基础上来展开讲解的二叉搜索树,也就是说二叉搜索树建立在树的基础之上。至于博主为何要花一整篇文章来讲这个二叉搜索树呢?原因很简单,红 黑树是基于二叉搜索树的,如果对二叉搜索树不了
阅读全文
摘要:一到周末就开始放荡自我,这不带着女朋友去万达电影院看电影(其实是由于整天呆在家敲代码硬是 被女朋友强行拖拽去看电影,作为一个有理想的程序员,我想各位应该都能体谅我),一到电影院, 女朋友说要买爆米花和可乐,我当时二话没说,臣本布衣躬耕于南阳,壤中羞涩,所以单买了爆米 花,买完都不带回头看老板的那种,
阅读全文
摘要:前面我们讲的都是线性表结构,栈、队列等等。今天我们讲一种非线性表结构,树。树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,首先我们先从树(Tree)开始讲起。 @[toc] 树(Tree) 树型结构是一种非线性结构,它的数据元素之间呈现分支、分层的特点。 1.树的定义 树(Tree)是由n
阅读全文
摘要:今天我们来聊聊“链表(Linked list)”这个数据结构。 在我们上一章中 "【从今天开始好好学数据结构02】栈与队列" 栈与队列底层都是采用顺序存储的这种方式的,而今天要聊的链表则是采用链式存储,链表可以说是继数组之后第二种使用得最广泛的通用数据结构了,可见其重要性! 相比 "数组" ,链表是
阅读全文
摘要:我们今天主要来谈谈“栈”以及队列这两种数据结构。 回顾一下上一章中 "【数据结构01】数组" 中,在数组中只要知道数据的下标,便可通过顺序搜索很快查询到数据,可以根据下标不同自由查找,然而今天要讲的“栈”以及队列这两种数据结构访问是受限制的,只允许在一端读取、插入和删除数据,这时候对它存在的意义产生
阅读全文
摘要:面试的时候,常常会问数组和链表的区别,很多人都回答说,“链表适合插入、删除,时间复杂度O(1);数组适合查找,查找时间复杂度为O(1)”。实际上,这种表述是不准确的。数组是适合查找操作,但是查找的时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是O(logn)。所以,正确的表
阅读全文
摘要:你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书。正是这个原因,让很多初学者对这门课望而却步。 我个人觉得,其实真正的原因是你没有找到好的 学习方法 ,没有抓住学习的重点。实际上,数据结
阅读全文
摘要:现如今大学生学习排序算法,除了学习它的算法原理、代码实现之外,作为一个大学生更重要的往往是要学会如何评价、分析一个排序算法。排序对于任何一个程序员来说,可能都不会陌生。大部分编程语言中,也都提供了排序函数。在平常的项目中,我们也经常会用到排序。排序非常重要!本章主要从如何分析一个算法开始入手,从而循
阅读全文