数据结构
文章平均质量分 51
Kukeoo
记录自己的学习生涯
展开
-
数据结构 栈【链栈的操作】
目录一、链栈结点定义二、链栈定义三、栈的初始化四、栈的插入操作——push五、栈的判空六、找到栈顶元素七、栈的删除操作——pop八、栈的销毁九、测试十、源码一、链栈结点定义//结构体:定义栈的每一个结点typedef struct Node{ //数据域 int data; //指针域 Node* next;//重命名,将struct Node 重命名为Node}Node;二、链栈定义//结构体:定义链栈typedef stru.原创 2021-05-08 17:16:06 · 1128 阅读 · 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 · 106 阅读 · 0 评论 -
算法 二叉树 【中序遍历迭代版】
一、思路迭代法需要借助while循环和迭代栈。中序遍历的顺序:左-根-右遍历步骤:1.准备一个当前指针cur,指向根结点;2.开辟一个空的迭代栈;3.进入while循环。循环结束的条件是:当前指针为空并且迭代栈为空。 因为当前指针不为空,迭代栈为空的情况是:根结点还未入栈 当前指针为空,迭代栈不为空的情况是:当前指针指向了目前最左元素的左孩子,而这个孩子肯定是nullptr4.在大循环中,首先建立一个小循环,不断地将当前指针指向的结点入栈,然...原创 2021-04-17 22:43:51 · 1522 阅读 · 0 评论 -
算法 二叉树 【先序遍历迭代版】
一、思路先序遍历分为递归版,迭代版和著名的Morris遍历。今天我们要分享的遍历法是迭代版。由于不允许使用递归,所以我们需要借助一个辅助栈。先序遍历的遍历顺序:根-左-右。所以我们的遍历方法是:0.非空判断。1.根结点入栈。--开始while循环,条件为栈不为空--2.栈顶元素出栈,进入到结果序列中。(因为栈顶元素就是此时应当遍历的根结点。)3.如果根结点右孩子不为空,则根结点的右孩子结点入栈。4.如果根结点左孩子不为空,则根结点的左孩子结点入栈。5.进入下原创 2021-04-12 23:31:14 · 896 阅读 · 0 评论