二叉树树的遍历

树的遍历和图的遍历

在计算机科学里,树的遍历指按照某种规则,不重复地访问树的所有节点的过程。具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。

因为树是图的一个子集,因此,树的遍历,也属于图遍历的子集。图遍历的原则主要有深度优先和广度优先两种。

这两大遍历原则对于树也同样适用。又因为有根树是树的一种,二叉树是有根树的一种,二叉树的遍历也分为深度优先和广度优先两种。

不过在实际应用中,对二叉树而言,深度优先用得更多。

下面我们具体讲一下二叉树的几种遍历方式。

二叉树的深度优先遍历算法

深度优先遍历二叉树的算法又有分为三种:先序遍历(Pre-Order Traversal),中序遍历(In-Order Traversal)和后序遍历(Post-Order Traversal)。

这里的先、中和后所指向的主体是什么呢?是根节点

先、中、后序遍历实际上是先根序,中根序后根序遍历。

这三种算法的区别就在于:在访问一棵树的时候,是先访问根节点,在“半截/中间”访问根节点,还是在最后访问根节点。

但无论那种遍历,都要:

  • 把一棵树拆成左子树、右子树和根三个部分;
  • 再将左右子树分别作为两棵树划分左右子树和根,如此层层深入下去;
  • 直到一棵子树只有一个节点为止。

比如下面这棵二叉树:

2-9课:树和图的现实意义、区别与联系相关推荐

  1. 《大话数据结构》6、7树、图

    第6章树 149 树: 树 (Tree) 是 n (n>=0) 个结点的有限集 . n=0 时称为空树. 在任意一棵非空 树中: ( 1 ) 有旦仅有一个特定的称为根 (Root) 的结点: ( ...

  2. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  3. bzoj 4871: [Shoi2017]摧毁“树状图”

    4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec  Memory Limit: 512 MB Submit: 53  Solved: 9 [Su ...

  4. 0x21.搜索 - 树与图的遍历、拓扑排序

    目录 一.树与图的深度优先遍历及树的一些性质 1.树与图的深度优先遍历 2.时间戳 3.树的DFS序(树链剖分前驱知识) 4.树的深度 5.树的重心与sizesizesize 6.图的连通块划分 二. ...

  5. R语言绘制环形树状图

    R语言绘制环形树状图 1.主要用到dendextend和circlize包绘图: library(dendextend) library(circlize)# 距离矩阵 d <- dist(US ...

  6. R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)

    R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录

  7. Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)

    Python使用matplotlib可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Dendrogram) 目录

  8. R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩

    R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色.在树状图dendrogram中为不同的层次聚类簇配置不同的色彩 #层次聚类树状图dendrogram labs = pa ...

  9. R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放、hclust包层次聚类(创建距离矩阵、聚类、绘制树状图dendrogram,在树状图上绘制红色矩形框)

    R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放.hclust包层次聚类(创建距离矩阵.聚类.绘制树状图dendrogram,在树状图上绘制红色矩形框) ...

最新文章

  1. ios中关于delegate(委托)的使用心得
  2. 为什么有些内联(行内)元素可以设置宽高?
  3. Android使用的设计模式2——策略模式
  4. 关于js中的判断数组为空的问题
  5. linux 恢复与暂停进程
  6. matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
  7. 域中添加电脑提示重名
  8. python使用-Pyhton 单行、多行注释符号使用方法及规范
  9. 转:知识管理概念综述(一)
  10. 一看就懂的Android APP开发入门教程
  11. 关于4442卡的读密码问题
  12. STRUTS 2 教程
  13. 关于Gateway实现JWT登陆拦截过滤器
  14. 四种常用的Git工作流过程分析
  15. python数据库实体_python---使用get方法访问‘数据库’实体
  16. c++程序 cpu占用过高排查方法
  17. win10连着网但网页打不开,代理服务器出现问题,或地址有误
  18. 赴德国旅游办理签证指南(转载)
  19. [转载]打工辛酸路:我是一朵飘零的花之81
  20. 记录一次使用线性回归和多项式回归为房价定价

热门文章

  1. 企业即时通讯软件的五大作用
  2. Go 语言 big.Int
  3. java过滤特殊字符,只留下字母、数字和汉字
  4. 超级计算机浪漫展览,银河的浪漫-星星
  5. 易语言如何使用处理事件
  6. 吃透这JAVA并发十二核心,面试官都得对你刮目相看
  7. Verilog HDL 语法学习笔记
  8. 光纤收发器具体是怎么使用的?光纤收发器使用方法详解!
  9. HTML5 权威指南第 10 章 文档分节 学习笔记
  10. 第一次软件工程作业(One who wants to wear the crown, Bears the crown.)