递归和迭代在图遍历中的对比-栈结构
递归和迭代在图遍历中的对比-栈结构
- 递归和迭代在图遍历中的对比-栈结构
- 递归和迭代
- 总结一下
递归和迭代在图遍历中的对比-栈结构
做了两道图遍历相关的题,分别是Leetcode230. Kth Smallest Element in a BST,Leetcode785. Is Graph Bipartite?,
这两道题都可以用递归和迭代两种方法来处理,然后有了一些细究下去的想法
为防止以后找不到,把思考的结论单独开一篇放在这里
注:由于只是从两道题中得来的结论,可能以偏概全,如果有错误或缺漏,请评论指出
递归和迭代
递归和迭代好像总是如影相随,细想一想:
递归的实现,也是借助于栈,只不过在程序中不可见,栈中保存的是当前节点的所有父节点,是访问到当前节点的路径,记忆的是来路,同级的兄弟节点是没有保存到栈中的
而迭代中的栈在程序中可见,直接拿出来用,用来保存当前节点的所有子节点,然后在访问的时候,由于当前节点已经弹出,所以,记忆的是去路
总结一下
栈的级别 | 栈在程序中是否可见 | 栈中保存的记忆 | 是否保存同级节点 | |
---|---|---|---|---|
递归 | 编译器 | 否 | 父节点,来路 | 否 |
迭代 | 用户程序 | 是 | 子节点,去路 | 是 |
递归和迭代在图遍历中的对比-栈结构相关推荐
- 二叉树遍历_递归和迭代(动图)
二叉树遍历_递归和迭代 1. 定义二叉树 2. 二叉树递归遍历 3. 二叉树迭代遍历 3.1 前序遍历 3.2 中序遍历 3.3 后序遍历 3.4 层序遍历 1. 定义二叉树 首先定义一个简单的二 ...
- 非递归实现二叉树的前序、中序、后序遍历
目录 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 根据二叉树的前序和中序遍历结果还原二叉树 根据二叉树的中序和后序遍历结果还原二叉树 非递归遍历需要借助栈. 非 ...
- 综述 | 生成对抗网络(GAN)在图网络中的应用
导语: 生成对抗网络(Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习.自2014年GAN网络提出以来,其在 ...
- List遍历中删除元素
List遍历主要有索引下标遍历.for循环遍历和Iterator迭代遍历,索引下标和for循环在遍历中删除元素都存在问题,Iterator迭代可以实现遍历中删除元素. 索引下标遍历 List<I ...
- JavaScript(JS)前序遍历,中序遍历,后序遍历,层序遍历,图文详解两种(递归与迭代)实现的方式
1.二叉树的前序遍历 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 在遍历左.右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根结点. ...
- LeetCode--144,94,145,102 二叉树的前序、中序、后序、层序遍历(递归,迭代,栈,队列)
二叉树的前序.中序.后序.层序遍历(递归,迭代,栈,队列) 1. 二叉树的前序遍历 1.1 题目描述 1.2 题目分析 1.3 Python实现 2. 二叉树的中序遍历 2.1 题目描述 2.2 题目 ...
- 二叉树的前序,中序,后序的递归、迭代实现
二叉树的前序遍历 递归实现 递归实现没什么好说的.个人感觉将函数功能看成一个整体,不要去想栈中怎么实现的.毕竟自己的脑袋不是电脑,绕着绕着就蒙了. void preordered_traversal_ ...
- [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]
[问题描述][中等] 根据一棵树的前序遍历与中序遍历构造二叉树.注意: 你可以假设树中没有重复的元素.例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...
- 计算机科学中的递归算法是把问题,从计算思维的视角辨析算法中的递归与迭代...
周世杰 算法思维是计算思维的一个方面,而在计算机科学中,基于递归和迭代的思维方式在算法和程序设计中广泛应用,是算法思维的重要构成部分.因此,信息技术学科教师在基础课教学中辨析递归与迭代算法,将其作为发 ...
最新文章
- Go 语言编程 — 程序运行环境
- Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析
- 应用adb发布apk到android avd模拟器
- Zabbix中文乱码问题
- LeetCode题库第867题 转置矩阵
- 开发asp.net2.0手机用网站 点滴[xgluxv]
- 深度学习(3)手写数字识别问题
- 关于 OutOfMemoryError 的总结与解决方法
- Linux磁盘阵列技术详解(三)--raid 5和raid 10的创建					推荐
- xml2 交叉编译移植
- 技校计算机程序设计,如何编写技工学校计算机程序设计课程校本教材
- 半导体物理学复习大纲
- c#html转换pdf,[C#] 网页Html转PDF档(一行程式码解决)
- 程序员如何阅读英文文档
- java options设置_JAVA_TOOL_OPTIONS和_JAVA_OPTIONS
- 安卓效率微商_微商猎手app下载-微商猎手下载 2.6 安卓版 - 河东软件园
- Unity景深效果解析
- 移动开发技术第一次大作业
- 基于ndis protocol driver 后门 分析
- MySQL数据库---数据库基础