![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
BananaScript
上至前后端人工智能,下至嵌入式树莓派,无所不能的IT全栈
展开
-
【线段树】线段树概念与基本使用
一. 线段树介绍 线段树的概念异常得简单。他本身也是一个用数组来表示树的结构(类似的还有堆和树状数组)。 线段树的特点: 线段树不是由用户手动输入的,它是由一个数组构造而来的。 线段树这种数据结构中,包含着一个数组,这个数组的每个元素,都保存着原来数组连续区间上的信息(可能是和或者最大最小值等等)。 众所周之树状数组也保存着原数组区间的信息,那么线段树的区间和树状数组的区间有什么区别呢?看一张图你就懂了(来自OI wiki): 首先,根元素是对应的区间是整个数组的区间。 其次,对于每个父节点原创 2020-12-02 15:12:00 · 281 阅读 · 0 评论 -
【树状数组】树状数组概念与基本使用
做算法题目的时候经常会遇到一些求区间和的内容。比如给你一个数组a[0..100],要你计算哪个区间的元素和为100这类的。 这种题目往常都是采用前缀和数组来解答的。设有数组a[0..100]对应的前缀数组b[0..100],则b元素的值为: 这样我们要求a[m..n]这个区间的内容,原本需要,现在只要计算这样的操作即可。 之所以前缀和数组计算区间和需要常数级别的复杂度,是因为我们在构建前缀和数组的时候,已经产生了的复杂度了。 有没有其它更好的方法来计算区间和呢?答案是有的。这就是树状数组。 .原创 2020-11-30 19:36:05 · 380 阅读 · 0 评论 -
【二叉树】总结
一. 二叉树四种遍历的方式: 前中后序遍历。 层序遍历——实际上就是利用BFS。 二. 二叉树解题的两种思路: 二叉树的形状特别像我们的递归树。 所以其实我们学二叉树利用递归,以后就是学递归利用二叉树,两者并不冲突。 解二叉树的题也有两种方法: 自顶向下的递归——先处理当前节点,再看看当前节点有没有什么能够传给子节点的。 自底向上的递归——看看由子节点的信息能不能得到当前节...原创 2019-10-19 15:03:24 · 68 阅读 · 0 评论 -
【数据结构整理】队列和栈
队列和栈 ·队列 一. 队列的实现 (这里只谈论循环队列, 普通队列空间浪费太严重) 建议使用类来封装,因为stl中的queue和stack也都是封装好的。 循环队列反正是使用vector来实现的,毕竟能实现随机访问。 有头指针和尾指针(用来指向最后一个元素的后一个位置),还有一个表示数据的数目。(由于空元素的存在,数组实际的大小为该元素值 + 1——所有操作都要考...原创 2019-10-14 16:20:03 · 113 阅读 · 0 评论