首先来看一下前序遍历的代码,遍历用到了递归,递归理解了,遍历的代码也就迎刃而解了。

/**
* 二叉树的前序遍历
* @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屏幕的那种通透感一样。

同时也把具体的图示给出来,方便大家对照理解

什么是递归(前序遍历)相关推荐

  1. 非递归前序遍历二叉树,非递归中序遍历二叉树,非递归后续遍历二叉树

    import java.util.Stack;public class Front {//非递归前序遍历public void front(TreeNode node) {Stack<TreeN ...

  2. python非递归前序遍历二叉树_LintCode66:二叉树的前序遍历(python)

    66. 二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历. 样例 样例 1: 输入:{1,2,3} 输出:[1,2,3] 解释: 1 / \ 2 3 它将被序列化为{1,2,3} 前序遍历 样 ...

  3. 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]

    递归|迭代的前序遍历 前言 一.扁平化嵌套列表迭代器 二.前序遍历(无需访问非叶节点) 1.递归实现 2.栈模拟 3.惰性栈模拟(next时再入栈) 总结 参考文献 前言 问题转换:将需求确认,结合已 ...

  4. python非递归前序遍历二叉树_Python非递归实现二叉树的后续遍历

    leetcode 145. Binary Tree Postorder Traversal 思路一: 使用一个栈stack保存经过的根结点,另一个栈flag保存每个结点的右子树是否遍历: 如果根结点存 ...

  5. 中序建立二叉树,非递归前序遍历二叉树

    内容: 编写程序,实现下述功能,并上机调试通过. 按中序顺序建立一棵二叉树: 用非递归方式遍历二叉树(先序),输出遍历序列. 步骤: 算法分析 采用二叉链表做存储结构,建立二叉树,借助于栈结构来实现二 ...

  6. 二叉树的层序遍历,前序遍历(递归,非递归),中序遍历(递归,非递归),后续遍历(递归,非递归)

    文章目录 二叉树的层序遍历 前序遍历 递归版本 非递归版本 中序遍历 递归版本 非递归版本 后序遍历 递归版本 非递归版本 二叉树的层序遍历 void printTree(BinaryTree* ar ...

  7. mysql 实现非递归树_二叉树的非递归前序,中序,后序遍历算法

    #include #include struct tree { char data; struct tree *lchild; struct tree *rchild; }; typedef stru ...

  8. 按照前序遍历创建二叉树及树的四种遍历方式

    一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2,可以视为每个结点都有左孩子和右孩子.故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层,则第i层最多有个结点. ...

  9. C实现前序遍历二叉树

    1. 实验目的 (1)掌握二叉树的逻辑结构: (2)掌握二叉树的二叉链表存储结构: (3)验证二叉树的二叉链表存储及遍历操作. 2. 实验目的 (1)建立一棵含有n个结点的二叉树,采用二叉链表存储: ...

  10. 二叉树递归(含非递归)遍历方式的流程图!

    时间紧迫,画的有点粗糙,请见谅! 创建 递归前序遍历 递归中序遍历 递归后序遍历 非递归前序+度为2.1叶子结点等求法

最新文章

  1. Noticaition 1.0 正式发布了
  2. 引号快捷键_就业有“位”来 能让你早下班的常用快捷键
  3. Lind.DDD敏捷领域驱动框架~介绍
  4. Python基础系列讲解——继承派生和组合的概念剖析
  5. 微信网页开发配置步骤
  6. Ruby命令之gem操作
  7. 互联网进入智慧互联时代 CSS将推进行业安全生态建设
  8. MYSQL入门基础知识
  9. sqlServer基础知识
  10. iis php url rewrite,IIS 7.5 使用URL Rewrite模块的简单设置实现网页跳转
  11. linux转录组kegg注释,蛋白质组学KEGG注释详解
  12. win10计算机休眠设置在哪里,win10怎么让屏幕一直亮着 win10设置休眠时间详细教程...
  13. 游戏陪练 预约交友 语音聊天 双端APP源代码+编译说明
  14. HTML5期末大作业:漫画网站设计——海贼王基地(5页) 学生动漫网页设计模板下载 海贼王大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板
  15. openssl 命令行加密解密
  16. 关于点焊,你知道多少
  17. AS608指纹模块开发教程
  18. Agile敏捷开发管理Salesforce项目(第一篇)- 4大核心价值观+12条原则
  19. OpenShift 4 - 在 CI/CD Pipeline 中创建 KubeVirt 容器虚拟机 - 方法1+2 (视频)
  20. android auto note 8,可持续发展BMW将发布无线安卓互联系统,CarPlay终于不再一家独大!...

热门文章

  1. root全攻略(root是什么 怎么root root能干什么)
  2. AffineTransformations仿射变化
  3. 因缘是诗意和困境的混杂
  4. pr玩转特效的九大技巧
  5. PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation剩余部分
  6. Bootstrap组件——【按钮(预定义样式类、边框颜色、大小、激活和禁用状态 、按钮标签)、按钮组(定义按钮组、工具栏按钮组、大小、嵌套按钮、垂直排列)、下拉菜单(定义下拉菜单、下拉菜单样式)】
  7. c语言上机题库编程,全国二级C语言上机编程题库
  8. windows 安装mysql5.7 解决MSVCP120.dll丢失问题
  9. Android开发-仿Soul社交应用首页3D星球视图旋转样式
  10. 7-2 大笨钟 (10分)