### 前言 大家好,我是bigsai,好久不见,甚是想念! 今天带大家征服二叉树的前中后序遍历,包含递归和非递归方式,学到就是赚到! 很多时候我们需要使用非递归的方式实现二叉树的遍历,非递归枚举相比递归方式的难度要高出一些,效率一般会高一些,并且前中后序枚举的难度呈一个递增的形式,非递归方式的枚举有人停在非递归后序,有人停在非递归中序,有人停在非递归前序(这就有点拉胯了啊兄弟)。 我们
### 哈夫曼树介绍 hello,大家好,我是bigsai。 哈夫曼树、哈夫曼编码很多人可能听过,但是可能并没有认真学习了解,今天这篇就比较详细的讲一下哈夫曼树。 首先哈夫曼树是什么? 哈夫曼树的**定义**:给定N个权值作为N个叶子结点,构造一棵二叉树,**若该树的带权路径长度达到最小**,称这样的二叉树为**最优二叉树**,也称为哈夫曼树(Huffman Tree),哈夫曼树是带权
## 全排列、组合、子集及重复不重复终于彻底搞懂啦 ### 前言 Hello,大家好,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列! **求全排列?** 全排列即:n个元素取n个元素(所有元素)的所有**排列组合情况**。 **求组合?** 组合即:n个元素取m个元
### 前言 大家好,我是bigsai。 **拓扑排序**,很多人都可能**听说但是不了解**的一种算法。不知者大多会提出这样的疑问: 这是某种排序算法?这好像是一种图论算法?图也能排序? 非线性结构在传统意义上确实不太好排序,而拓扑排序它是对**有向图的顶点**排成一个线性序列。并且不一定唯一。 **什么是拓扑排序?** >对一个有向无环图(Directed Acyclic Grap
## 跳表 ### 前言 跳表是面试常问的一种数据结构,它在很多中间件和语言中得到应用,我们熟知的就有Redis跳表。并且在面试的很多场景可能会问到,偶尔还会让你手写试一试(跳表可能会让手写,红黑树是不可能的),这不,给大伙复原一个场景: ![image-20201225113330615](https://bigsai.oss-cn-shanghai.aliyuncs.com/i
### 前言 你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用计算机超强计算大部分都能求的一份解,学会dfs和bfs去暴力杯混分是一个非常不错的选择! ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019090
### 前言 前面有很详细的讲过线性表(顺序表和链表),当时讲的链表以但链表为主,但实际上在实际应用中双链表的应用多一些就比如LinkedList。 ![图片来源百度](https://img-blog.csdnimg.cn/20190809000824266.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow
### 什么是栈 栈在我们日常编码中遇到的非常多,很多人对栈的接触可能仅仅局限在 **递归使用的是栈** 和 **StackOverflowException**,栈是一种后进先出的数据结构(可以想象生化金字塔的牢房和生化角斗场的狗洞)。 在这里插入图片描述 栈是这么定义的: 栈(stack)又名堆栈,它是一种**运算受限**的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地
### 前言 大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂! **快速幂是什么?** 顾名思义,快速幂就是快速算底数的n次幂。你可能疑问,求n次幂算n次叠乘不就行了?当n巨大无比时候,如果需要末尾有效尾数值等信息这个可能超出计算机运算范围。 **有多快?** 快速幂时间复杂度为 O(log₂n), 与朴素的O(n)相比
## 字典树 牛逼 ### 什么是字典树 字典树,是一种**空间换时间**的数据结构,又称Trie树、前缀树,是一种树形结构(字典树是一种数据结构),典型用于统计、排序、和保存大量字符串。所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 ![image-20210512184041023]
    Page 3 of 4