2-9课:树和图的现实意义、区别与联系
二叉树树的遍历
树的遍历和图的遍历
在计算机科学里,树的遍历指按照某种规则,不重复地访问树的所有节点的过程。具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。
因为树是图的一个子集,因此,树的遍历,也属于图遍历的子集。图遍历的原则主要有深度优先和广度优先两种。
这两大遍历原则对于树也同样适用。又因为有根树是树的一种,二叉树是有根树的一种,二叉树的遍历也分为深度优先和广度优先两种。
不过在实际应用中,对二叉树而言,深度优先用得更多。
下面我们具体讲一下二叉树的几种遍历方式。
二叉树的深度优先遍历算法
深度优先遍历二叉树的算法又有分为三种:先序遍历(Pre-Order Traversal),中序遍历(In-Order Traversal)和后序遍历(Post-Order Traversal)。
这里的先、中和后所指向的主体是什么呢?是根节点。
先、中、后序遍历实际上是先根序,中根序和后根序遍历。
这三种算法的区别就在于:在访问一棵树的时候,是先访问根节点,在“半截/中间”访问根节点,还是在最后访问根节点。
但无论那种遍历,都要:
- 把一棵树拆成左子树、右子树和根三个部分;
- 再将左右子树分别作为两棵树划分左右子树和根,如此层层深入下去;
- 直到一棵子树只有一个节点为止。
比如下面这棵二叉树:
2-9课:树和图的现实意义、区别与联系相关推荐
- 《大话数据结构》6、7树、图
第6章树 149 树: 树 (Tree) 是 n (n>=0) 个结点的有限集 . n=0 时称为空树. 在任意一棵非空 树中: ( 1 ) 有旦仅有一个特定的称为根 (Root) 的结点: ( ...
- swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实
swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...
- bzoj 4871: [Shoi2017]摧毁“树状图”
4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec Memory Limit: 512 MB Submit: 53 Solved: 9 [Su ...
- 0x21.搜索 - 树与图的遍历、拓扑排序
目录 一.树与图的深度优先遍历及树的一些性质 1.树与图的深度优先遍历 2.时间戳 3.树的DFS序(树链剖分前驱知识) 4.树的深度 5.树的重心与sizesizesize 6.图的连通块划分 二. ...
- R语言绘制环形树状图
R语言绘制环形树状图 1.主要用到dendextend和circlize包绘图: library(dendextend) library(circlize)# 距离矩阵 d <- dist(US ...
- R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)
R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录
- Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)
Python使用matplotlib可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Dendrogram) 目录
- R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩
R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色.在树状图dendrogram中为不同的层次聚类簇配置不同的色彩 #层次聚类树状图dendrogram labs = pa ...
- R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放、hclust包层次聚类(创建距离矩阵、聚类、绘制树状图dendrogram,在树状图上绘制红色矩形框)
R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放.hclust包层次聚类(创建距离矩阵.聚类.绘制树状图dendrogram,在树状图上绘制红色矩形框) ...
最新文章
- ios中关于delegate(委托)的使用心得
- 为什么有些内联(行内)元素可以设置宽高?
- Android使用的设计模式2——策略模式
- 关于js中的判断数组为空的问题
- linux 恢复与暂停进程
- matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
- 域中添加电脑提示重名
- python使用-Pyhton 单行、多行注释符号使用方法及规范
- 转:知识管理概念综述(一)
- 一看就懂的Android APP开发入门教程
- 关于4442卡的读密码问题
- STRUTS 2 教程
- 关于Gateway实现JWT登陆拦截过滤器
- 四种常用的Git工作流过程分析
- python数据库实体_python---使用get方法访问‘数据库’实体
- c++程序 cpu占用过高排查方法
- win10连着网但网页打不开,代理服务器出现问题,或地址有误
- 赴德国旅游办理签证指南(转载)
- [转载]打工辛酸路:我是一朵飘零的花之81
- 记录一次使用线性回归和多项式回归为房价定价