上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要: 树的遍历 树的遍历方式有先根遍历和后根遍历。在下面树的遍历中,采用的都是孩子兄弟表示法构建的树。 树的先根遍历 树的先根遍历步骤 先根遍历就是先访问树的根节点,然后再依次访问树的孩子们。在这里我们需要用递归函数来实现树的先根遍历,先打印当前节点的数据,然后再递归访问其第一个孩子,再递归访问当前节点的 阅读全文
posted @ 2023-02-04 23:27 MarisaMagic 阅读(1171) 评论(0) 推荐(0) 编辑
摘要: 树 树的表示方法 双亲表示法 用一组地址连续的存储单元来存放树中的各个节点,每一个节点中有一个数据域和一个指针域,数据域用来存储树中该节点本身的值;另一个指针域用来存储该节点的双亲节点在存储结构中的位置信息。 采用双亲链表存储方式实现查找一个指定节点的双亲节点比较方便,但难以实现查找一个指定节点的孩 阅读全文
posted @ 2023-02-04 17:02 MarisaMagic 阅读(559) 评论(0) 推荐(1) 编辑
摘要: 哈夫曼树 哈夫曼树简介 给定 N 个权值作为 N 个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树( Huffman Tree )。 哈夫曼树涉及的基本概念 路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子结点之间的通路,称为路径。通路中分 阅读全文
posted @ 2023-02-01 23:23 MarisaMagic 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 前中后序遍历 前中后序遍历的特点 前序遍历 前序遍历顺序:根节点 -> 左子树 -> 右子树 前序遍历结果:[根节点,[左子树前序遍历结果],[右子树前序遍历结果]] 假如把前序遍历结果存到数组中,数组中的第一个元素就是二叉树根节点的数据,而且还可以知道第二个元素是根节点左孩子的数据,即左子树根节点 阅读全文
posted @ 2023-01-31 23:13 MarisaMagic 阅读(302) 评论(0) 推荐(1) 编辑
摘要: 二叉树的遍历 主要的三种遍历方式 二叉树主要的遍历方式有前序遍历、中序遍历和后序遍历。 (1)前序遍历:根节点-->左子树-->右子树 (2)中序遍历:左子树-->根节点-->右子树 (3)后序遍历:左子树-->右子树-->根节点 其实还有一种比较基础的遍历方式是层次遍历,但是在本篇文章中不会涉及层 阅读全文
posted @ 2023-01-30 13:35 MarisaMagic 阅读(1357) 评论(0) 推荐(3) 编辑
摘要: 字符串匹配问题 给定一个字符串 s 和一个要匹配的模式串 p。模式串 p 有可能在 s 中多次出现,请求出模式串 p 在 s 中所有出现的起始位置。 暴力匹配算法 BF 算法思路 在面对字符串匹配问题时,很容易想到暴力求解。字符串匹配的暴力算法思路很简单,即在 s 中枚举起点 i,对于每个起点匹配字 阅读全文
posted @ 2023-01-25 11:33 MarisaMagic 阅读(1334) 评论(1) 推荐(0) 编辑
摘要: 队列 队列基本概念 队列( queue )是一种特殊的线性表结构,只从队尾插入新的元素,并且只从队首弹出元素。一般将队尾称为 rear,队首称为 front 。 队列基本操作 (1)入队:从队尾 rear 插入新元素; (2)出队:从队首 front 弹出元素。 队列的特性 队列遵循 先进先出 的原 阅读全文
posted @ 2023-01-21 11:49 MarisaMagic 阅读(696) 评论(0) 推荐(0) 编辑
摘要: 栈 栈的概念 栈(stack)是一种特殊的线性表存储结构,其一端可以进行插入和弹出的操作,而另一端是封死的。 可以把栈想象成是一个柱状的容器。就比如一个乒乓球筒,我们只能在筒的一段进行乒乓球的放入和取出。 栈顶和栈的两种操作 栈顶就是栈的开口端,每次都是在栈顶处插入元素和删除元素。 (1)入栈:将新 阅读全文
posted @ 2023-01-19 22:49 MarisaMagic 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 插入排序 插入排序回顾 我们先回顾一下对数组的插入排序,其步骤大致为: 先将第一个数据元素看作是一个有序序列,后面的 n-1 个数据元素看作是未排序序列。对后面未排序序列中的第一个数据元素在这个有序序列中进行从后往前扫描,找到合适的插入位置并插入到其中,每次有序序列的长度 +1。 重复这样的操作,将 阅读全文
posted @ 2023-01-18 21:05 MarisaMagic 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 双向链表 双向链表概念 双向链表也叫双链表,其每个数据结点中都有两个指针,分别指向直接后继和直接前驱。在单向链表中若要找到某个节点的前驱节点,需要先遍历到这个节点,然后再遍历一次找到其前驱节点,这无疑是十分低效的。而双向链表可以做到正向反向遍历,由此相比单向链表可以更高效地找到某个节点的前驱节点。 阅读全文
posted @ 2023-01-17 21:53 MarisaMagic 阅读(265) 评论(1) 推荐(1) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 下一页