非递归的遍历方式

现在有一颗二叉树

我们将每个节点看做一个根节点,并对其进行前序遍历,可以得到

ABC       BDE      D       E      CF     F

可以发现,每个节点都出现了两次,可以认为是相邻节点,我们按照顺序进行组合,比如ABC和BDE,因为DE是以B为根节点遍历出来的,所以优先和B组合,就可以得到ABDEC,将只有一个节点的排除,那么我们得到ABDECF这就是前序遍历。

如果我们对其进行中序遍历,可以得到

BAC     DBE      D      E      CF     F

同样的组合,可以得到DBEACF。

其实这个规律,是参考局部的排序能够保证整体的排序方式,所以我们需要对每个节点进行相应的遍历操作(进行入栈),当第二次遇到该节点,就可以入队列了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,509评论 1 31
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,247评论 0 12
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,844评论 0 19
  • 秋日的阳光柔柔地铺满教学楼的走廊,不急不躁,温暖袭人。 模拟考试后某班的第一节课前,董同学跑过来告诉我:''老师,...
    然依紫阅读 313评论 6 14