
数据结构
文章平均质量分 51
Kukeoo
记录自己的学习生涯
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构 栈【链栈的操作】
目录 一、链栈结点定义 二、链栈定义 三、栈的初始化 四、栈的插入操作——push 五、栈的判空 六、找到栈顶元素 七、栈的删除操作——pop 八、栈的销毁 九、测试 十、源码 一、链栈结点定义 //结构体:定义栈的每一个结点 typedef struct Node { //数据域 int data; //指针域 Node* next; //重命名,将struct Node 重命名为Node }Node; 二、链栈定义 //结构体:定义链栈 typedef stru.原创 2021-05-08 17:16:06 · 1324 阅读 · 0 评论 -
算法 二叉树 【剑指offer 27 镜像二叉树】
目录 一、问题描述 二、思路 三、举例 四、代码 一、问题描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 31 示例1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 二、思路 这道算法题我们采用递归的...原创 2021-04-18 15:49:23 · 149 阅读 · 0 评论 -
算法 二叉树 【中序遍历迭代版】
一、思路 迭代法需要借助while循环和迭代栈。 中序遍历的顺序:左-根-右 遍历步骤: 1.准备一个当前指针cur,指向根结点; 2.开辟一个空的迭代栈; 3.进入while循环。循环结束的条件是:当前指针为空并且迭代栈为空。 因为当前指针不为空,迭代栈为空的情况是:根结点还未入栈 当前指针为空,迭代栈不为空的情况是:当前指针指向了目前最左元素的左孩子,而这个孩子肯定是nullptr 4.在大循环中,首先建立一个小循环,不断地将当前指针指向的结点入栈,然...原创 2021-04-17 22:43:51 · 1939 阅读 · 0 评论 -
算法 二叉树 【先序遍历迭代版】
一、思路 先序遍历分为递归版,迭代版和著名的Morris遍历。 今天我们要分享的遍历法是迭代版。 由于不允许使用递归,所以我们需要借助一个辅助栈。 先序遍历的遍历顺序:根-左-右。 所以我们的遍历方法是: 0.非空判断。 1.根结点入栈。 --开始while循环,条件为栈不为空-- 2.栈顶元素出栈,进入到结果序列中。(因为栈顶元素就是此时应当遍历的根结点。) 3.如果根结点右孩子不为空,则根结点的右孩子结点入栈。 4.如果根结点左孩子不为空,则根结点的左孩子结点入栈。 5.进入下原创 2021-04-12 23:31:14 · 1196 阅读 · 0 评论