01 2023 档案

摘要:前中后序遍历 前中后序遍历的特点 前序遍历 前序遍历顺序:根节点 -> 左子树 -> 右子树 前序遍历结果:[根节点,[左子树前序遍历结果],[右子树前序遍历结果]] 假如把前序遍历结果存到数组中,数组中的第一个元素就是二叉树根节点的数据,而且还可以知道第二个元素是根节点左孩子的数据,即左子树根节点 阅读全文
posted @ 2023-01-31 23:13 MarisaMagic 阅读(411) 评论(0) 推荐(1) 编辑
摘要:二叉树的遍历 主要的三种遍历方式 二叉树主要的遍历方式有前序遍历、中序遍历和后序遍历。 (1)前序遍历:根节点-->左子树-->右子树 (2)中序遍历:左子树-->根节点-->右子树 (3)后序遍历:左子树-->右子树-->根节点 其实还有一种比较基础的遍历方式是层次遍历,但是在本篇文章中不会涉及层 阅读全文
posted @ 2023-01-30 13:35 MarisaMagic 阅读(3767) 评论(1) 推荐(4) 编辑
摘要:字符串匹配问题 给定一个字符串 s 和一个要匹配的模式串 p。模式串 p 有可能在 s 中多次出现,请求出模式串 p 在 s 中所有出现的起始位置。 暴力匹配算法 BF 算法思路 在面对字符串匹配问题时,很容易想到暴力求解。字符串匹配的暴力算法思路很简单,即在 s 中枚举起点 i,对于每个起点匹配字 阅读全文
posted @ 2023-01-25 11:33 MarisaMagic 阅读(2834) 评论(2) 推荐(1) 编辑
摘要:队列 队列基本概念 队列( queue )是一种特殊的线性表结构,只从队尾插入新的元素,并且只从队首弹出元素。一般将队尾称为 rear,队首称为 front 。 队列基本操作 (1)入队:从队尾 rear 插入新元素; (2)出队:从队首 front 弹出元素。 队列的特性 队列遵循 先进先出 的原 阅读全文
posted @ 2023-01-21 11:49 MarisaMagic 阅读(1423) 评论(0) 推荐(0) 编辑
摘要:栈 栈的概念 栈(stack)是一种特殊的线性表存储结构,其一端可以进行插入和弹出的操作,而另一端是封死的。 可以把栈想象成是一个柱状的容器。就比如一个乒乓球筒,我们只能在筒的一段进行乒乓球的放入和取出。 栈顶和栈的两种操作 栈顶就是栈的开口端,每次都是在栈顶处插入元素和删除元素。 (1)入栈:将新 阅读全文
posted @ 2023-01-19 22:49 MarisaMagic 阅读(708) 评论(0) 推荐(0) 编辑
摘要:插入排序 插入排序回顾 我们先回顾一下对数组的插入排序,其步骤大致为: 先将第一个数据元素看作是一个有序序列,后面的 n-1 个数据元素看作是未排序序列。对后面未排序序列中的第一个数据元素在这个有序序列中进行从后往前扫描,找到合适的插入位置并插入到其中,每次有序序列的长度 +1。 重复这样的操作,将 阅读全文
posted @ 2023-01-18 21:05 MarisaMagic 阅读(781) 评论(0) 推荐(0) 编辑
摘要:双向链表 双向链表概念 双向链表也叫双链表,其每个数据结点中都有两个指针,分别指向直接后继和直接前驱。在单向链表中若要找到某个节点的前驱节点,需要先遍历到这个节点,然后再遍历一次找到其前驱节点,这无疑是十分低效的。而双向链表可以做到正向反向遍历,由此相比单向链表可以更高效地找到某个节点的前驱节点。 阅读全文
posted @ 2023-01-17 21:53 MarisaMagic 阅读(639) 评论(1) 推荐(2) 编辑
摘要:单向链表的去重 问题描述及分析 给定一个有序的链表,去除重复出现的元素,使每个元素只出现一次。例如一个单向链表为 1->1->2->2->3->4->4->∅ , 那么去重后得到的单向链表为 1->2->3->4->∅ 。 这里的链表保证是有序的,所以出现的重复元素都是相邻的,所以对整个链表进行一次 阅读全文
posted @ 2023-01-01 17:54 MarisaMagic 阅读(342) 评论(0) 推荐(2) 编辑