写出二叉树的先序遍历、中序遍历、后序遍历。

如题所述

首先
观察这个二叉树
可见是这样的: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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-13
一、先序遍历:
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的节点对应时,称之为完全二叉树。
相似回答
大家正在搜