若文章对你有帮助请点个👍👍👍, 表示对我的鼓励, 非常感谢 ❤️❤️❤️
背景
为了让程序有自己的灵魂, 以及锻炼自己的思维逻辑能力. 特此学习了下Leetcode的栈和队列, 受益良多, 因此写下感受来使更多人看见, 方便他人. 欢迎大家提意见.
面向刚刷leetcode的新人和对数据结构不了解的人.
队列的基本概念
队列的基本思想就是先入队的最先出队(FIFO).
入队
基于上图中, 往队列中加入一个元素.
出队
从队列中移除一个元素.
栈的基本概念
栈与队列相反, 栈是先入后入的数据结构(FILO).
入栈
栈的元素入栈之后, 落入栈的顶端.
出栈
出栈的元素从栈顶进行移出.
BFS的基本概念
BFS是广度优先搜索, 该算法主要是用来遍历树和图. 它的基本思想是从根节点开始, 依次遍历距离根节点最近的节点.
所以上图的广度优先遍历顺序为: 1, 2, 3, 4, 5, 6, 7
DFS的基本概念
DFS是深度优先搜索, 也是用来遍历树和图. 它的基本思想是从根节点开始访问, 然后尽可能地往深处访问. 如果发现已经访问到叶子节点或者该节点的分支已经全部访问, 则回溯到父节点.
假设有一树如下图所示, 现在要用DFS访问该树的所有节点.