内容简介:这一篇是接上一篇文章二叉树遍历分为三种:前序、中序、后序:另外还有一种
这一篇是接上一篇文章 二叉树的基本运算
二叉树的遍历
二叉树遍历分为三种:前序、中序、后序:
- 前序遍历:根结点 -> 左子树 -> 右子树
- 中序遍历:左子树 -> 根结点 -> 右子树
- 后序遍历:左子树 -> 右子树 -> 根结点
另外还有一种 层次遍历 ,即每一层都从左向右遍历。
譬如,对于下面的二叉树
前序遍历:abdefgc
中序遍历:debgfac
后序遍历:edgfbca
层次遍历:abcdfeg
实现方法
因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用 栈 去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现, 非递归后序遍历 实现起来相对来说要难一点
中序遍历
go实现
// 中序遍历,用栈实现
func inOrderBinaryTree1(root *BinaryTreeNode) {
if root == nil {
return
}
stack := []*BinaryTreeNode{}
top := -1
for top >= 0 || root != nil {
for root != nil {
stack = append(stack, root)
top++
root = root.lChild
}
item := stack[top]
stack = stack[:top]
top-- // 出栈
fmt.Print(item.data)
if item.rChild != nil {
root = item.rChild
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
30天自制操作系统
[日] 川合秀实 / 周自恒、李黎明、曾祥江、张文旭 / 人民邮电出版社 / 2012-8 / 99.00元
自己编写一个操作系统,是许多程序员的梦想。也许有人曾经挑战过,但因为太难而放弃了。其实你错了,你的失败并不是因为编写操作系统太难,而是因为没有人告诉你那其实是一件很简单的事。那么,你想不想再挑战一次呢? 这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、C语言开始解说,让你在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位......一起来看看 《30天自制操作系统》 这本书的介绍吧!