什么是递归(前序遍历)
首先来看一下前序遍历的代码,遍历用到了递归,递归理解了,遍历的代码也就迎刃而解了。
/**
* 二叉树的前序遍历
* @param node 二叉树节点
*/
public static void preOrderTraveral(TreeNode node) {if(node == null) {return;}System.out.println(node.data); //SpreOrderTraveral(node.leftChild); //LpreOrderTraveral(node.rightChild); //R
}
传入一个node,先输出,然后在对其左孩子进行递归调用preOrderTraveral()方法,在其左孩子这一层又是先输出,然后接着递归调用preOrderTraveral()方法,这样一层一层的嵌套下去,然后执行完了还要一层一层的返回,让人觉得很蒙,在脑海中想个两三层就乱了,很难把整个过程理清楚。
有可能还会越想越绕,最终一知半解放到那里先不管了。过了许久再次翻到这个知识点时感觉有些理解但不是那么透彻,然后再次尝试着想一下,但是好像还是不那么的明白。反正笔者就是这么一个状态,不过我再次遇到这个知识点的时候,一个做法改变了这样的状态----那就是尝试动手写一下流程。
为了简便,我们用S,L,R分别代表上面方法里面的3条语句,从上到下以依次为执行顺序。这样,输出顺序为–1,2,4,5,3,6是不是就一步了然了呢。这个图也不是特别难画,但是从来都是一直在脑海中想,而没有动手画过,当这个图画出来的时候,顿时感觉清爽了好多,就像一块好的Amoled屏幕的那种通透感一样。
同时也把具体的图示给出来,方便大家对照理解
什么是递归(前序遍历)相关推荐
- 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树
import java.util.Stack;public class Front {//非递归前序遍历public void front(TreeNode node) {Stack<TreeN ...
- python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python)
66. 二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历. 样例 样例 1: 输入:{1,2,3} 输出:[1,2,3] 解释: 1 / \ 2 3 它将被序列化为{1,2,3} 前序遍历 样 ...
- 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
递归|迭代的前序遍历 前言 一.扁平化嵌套列表迭代器 二.前序遍历(无需访问非叶节点) 1.递归实现 2.栈模拟 3.惰性栈模拟(next时再入栈) 总结 参考文献 前言 问题转换:将需求确认,结合已 ...
- python非递归前序遍历二叉树_Python非递归实现二叉树的后续遍历
leetcode 145. Binary Tree Postorder Traversal 思路一: 使用一个栈stack保存经过的根结点,另一个栈flag保存每个结点的右子树是否遍历: 如果根结点存 ...
- 中序建立二叉树,非递归前序遍历二叉树
内容: 编写程序,实现下述功能,并上机调试通过. 按中序顺序建立一棵二叉树: 用非递归方式遍历二叉树(先序),输出遍历序列. 步骤: 算法分析 采用二叉链表做存储结构,建立二叉树,借助于栈结构来实现二 ...
- 二叉树的层序遍历,前序遍历(递归,非递归),中序遍历(递归,非递归),后续遍历(递归,非递归)
文章目录 二叉树的层序遍历 前序遍历 递归版本 非递归版本 中序遍历 递归版本 非递归版本 后序遍历 递归版本 非递归版本 二叉树的层序遍历 void printTree(BinaryTree* ar ...
- mysql 实现非递归树_二叉树的非递归前序,中序,后序遍历算法
#include #include struct tree { char data; struct tree *lchild; struct tree *rchild; }; typedef stru ...
- 按照前序遍历创建二叉树及树的四种遍历方式
一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2,可以视为每个结点都有左孩子和右孩子.故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层,则第i层最多有个结点. ...
- C实现前序遍历二叉树
1. 实验目的 (1)掌握二叉树的逻辑结构: (2)掌握二叉树的二叉链表存储结构: (3)验证二叉树的二叉链表存储及遍历操作. 2. 实验目的 (1)建立一棵含有n个结点的二叉树,采用二叉链表存储: ...
- 二叉树递归(含非递归)遍历方式的流程图!
时间紧迫,画的有点粗糙,请见谅! 创建 递归前序遍历 递归中序遍历 递归后序遍历 非递归前序+度为2.1叶子结点等求法
最新文章
- Noticaition 1.0 正式发布了
- 引号快捷键_就业有“位”来 能让你早下班的常用快捷键
- Lind.DDD敏捷领域驱动框架~介绍
- Python基础系列讲解——继承派生和组合的概念剖析
- 微信网页开发配置步骤
- Ruby命令之gem操作
- 互联网进入智慧互联时代 CSS将推进行业安全生态建设
- MYSQL入门基础知识
- sqlServer基础知识
- iis php url rewrite,IIS 7.5 使用URL Rewrite模块的简单设置实现网页跳转
- linux转录组kegg注释,蛋白质组学KEGG注释详解
- win10计算机休眠设置在哪里,win10怎么让屏幕一直亮着 win10设置休眠时间详细教程...
- 游戏陪练 预约交友 语音聊天 双端APP源代码+编译说明
- HTML5期末大作业:漫画网站设计——海贼王基地(5页) 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板
- openssl 命令行加密解密
- 关于点焊,你知道多少
- AS608指纹模块开发教程
- Agile敏捷开发管理Salesforce项目(第一篇)- 4大核心价值观+12条原则
- OpenShift 4 - 在 CI/CD Pipeline 中创建 KubeVirt 容器虚拟机 - 方法1+2 (视频)
- android auto note 8,可持续发展BMW将发布无线安卓互联系统,CarPlay终于不再一家独大!...
热门文章
- root全攻略(root是什么 怎么root root能干什么)
- AffineTransformations仿射变化
- 因缘是诗意和困境的混杂
- pr玩转特效的九大技巧
- PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation剩余部分
- Bootstrap组件——【按钮(预定义样式类、边框颜色、大小、激活和禁用状态 、按钮标签)、按钮组(定义按钮组、工具栏按钮组、大小、嵌套按钮、垂直排列)、下拉菜单(定义下拉菜单、下拉菜单样式)】
- c语言上机题库编程,全国二级C语言上机编程题库
- windows 安装mysql5.7 解决MSVCP120.dll丢失问题
- Android开发-仿Soul社交应用首页3D星球视图旋转样式
- 7-2 大笨钟 (10分)