大数跨境
0
0

丰沃讲师 | 二叉树遍历算法

丰沃讲师 | 二叉树遍历算法 丰沃创新
2019-11-13
2
导读:二叉树的遍历是指从根节点触发,按照某种次序依次访问二叉树中所有的节点。由于不同于线性结构,二叉树达到一个节点

二叉树的遍历是指从根节点触发,按照某种次序依次访问二叉树中所有的节点。由于不同于线性结构,二叉树达到一个节点需要选择两个子节点的先后顺序,所有遍历方式有很多。


1.  二叉树遍历方法

二叉树遍历方式有很多,所以如下介绍的遍历方式,我们约定从左往右进行遍历。我们需要遍历的树结构如下:



下面的遍历算法用Python实现,不会Python的同学不用担心,因为算法逻辑很简单。先看下我们的节点对象的定义:



01前序遍历


前序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先打印当前节点内容,然后依次递归所有左子节点,再依次递归所有右子节点。遍历顺序为:ABDGHCEIF递归算法如下:



02中序遍历


中序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先依次递归所有左子节点,然后打印当前节点内容,再递归所有右子节点。遍历顺序为:GDHBAEICF递归算法如下:



03后序遍历


后序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先依次递归所有左子节点,再递归所有右子节点,最后打印当前节点内容。遍历顺序为:GHDBIEFCA递归算法如下:



04按层遍历


按层遍历算法,我们将每层所有节点作为列表,传入函数进行递归,先传入列表是否为空,如果为空则返回。声明一个下一层级的子集列表。依次循环当前传入的节点列表,并打印节点数据,将当前节点左节点添加到下一层级的子集列表中,然后添加右节点。最终遍历顺序为:ABCDEFGHI递归算法如下:



05、完整代码:


【声明】内容源于网络
0
0
丰沃创新
国内领先的ICT综合服务提供商,丰沃创新总部位于北京。业务覆盖全国。业务主要涵盖系统集成与软件开发、客户技术支持服务、ICT及AIoT产品教育培训三个事业部,为政府、电力能源、交通、金融、教育等诸多行业客户提供专业化的ICT产品及服务。
内容 1642
粉丝 0
丰沃创新 国内领先的ICT综合服务提供商,丰沃创新总部位于北京。业务覆盖全国。业务主要涵盖系统集成与软件开发、客户技术支持服务、ICT及AIoT产品教育培训三个事业部,为政府、电力能源、交通、金融、教育等诸多行业客户提供专业化的ICT产品及服务。
总阅读453
粉丝0
内容1.6k