一、先序遍历:
1、访问根节点
2、前序遍历左子树
3、前序遍历右子树
二、中序遍历:
1、中序遍历左子树
2、访问根节点
3、中序遍历右子树
三、后序遍历:
1、后序遍历左子树
2、后序遍历右子树
3、访问根节点
下面介绍一下例子与方法:
1、画树求法:
第一步,根据前序遍历的特点,我们知道根结点为G
第二步,观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
第三步,观察左子树ADEF,左子树的中的根节点必然是大树的root的leftchild。在前序遍历中,大树的root的leftchild位于root之后,所以左子树的根节点为D。
第四步,同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的左子树的第一个节点就是左子树的根节点。同理,遍历的右子树的第一个节点就是右子树的根节点。
第五步,观察发现,上面的过程是递归的。先找到当前树的根节点,然后划分为左子树,右子树,然后进入左子树重复上面的过程,然后进入右子树重复上面的过程。最后就可以还原一棵树了。该步递归的过程可以简洁表达如下:
1 确定根,确定左子树,确定右子树。
2 在左子树中递归。
3 在右子树中递归。
4 打印当前根。
那么,我们可以画出这个二叉树的形状:
那么,根据后序的遍历规则,我们可以知道,后序遍历顺序为:AEFDHZMG
二叉树的一些介绍:
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。
可见是这样的:1.以B为根节点的左子树 A根节点 以C为根节点的右子树
2.以D为根节点的左子树 B根节点 以E为根节点的右子树
3.以G为根节点的左子树 D根节点 以H为根节点的右子树
4.以K为根节点的左子树 C根节点 以F为根节点的右子树
5.以I为根节点的左子树 F根节点 右子树为空
6.左子树为空 I根节点 以J为根节点的右子树
接下来可以进行遍历了:
前序遍历 是 根 左子树 右子树:
即先是跟节点A 然后遍历 B子树 遍历完B子树后 再遍历C子树 即最后答案为:
ABDGHECKFIJ
中序遍历为 左子树 根 右子树
先遍历 B子树 遍历完了 再是A节点 然后是右子树 答案为:
GDHBEAKCIJF
后序遍历是 左子树 右子树 根
答案为:
GHDEBKJIFCA
A B D G H E C K F I J
中序输出:
G D H B E A K C I J F
后序输出:
G H D E B K J I F C A
中序:左子树、根、右子树 GDHBEAKCIJF
后序:左子树、右子树、根 GHDEBKJIFCA