二叉树遍历序列怎么写

1.二叉树先根遍历,中根遍历序列这里的“先根”也叫做先序,“中”和“后”也一样 。
先序遍历是先访问当前节点,然后再遍历左子树,最后是右子树 。
中序遍历是先遍历左子树,再访问当前节点,最后是右子树 。
后序遍历是先遍历左子树,再遍历右子树,最后访问当前节点 。例:
一棵二叉树的先根遍历为ABCDEFG,中根遍历为CBDEAGF,则其后根遍历为:1、先序遍历的第一个当前节点一定是根节点,所以A是根
2、由于中序遍历是先遍历完左子树再访问当前节点,所以可以看出中序序列在A之前的都是A的左子树中的节点,而在A之后是A的右子树的节点 。
3、这样就分成了(cbde)a (GF),三个集合 。
4、我们分别再看各个集合 。cbde集合中最先在先序序列中出现的是B,这说明b在这个集合中应该是第一个出现的 。所以右可以再分
2.二叉树的遍历程序怎么写//////////////////////////////////////////////////////////////////////////
//递归算法实现树的遍历
//////////////////////////////////////////////////////////////////////////
//先序递归
void preorderD(BiTree T)
{
if (T != NULL)
{
printf("%c", T->data);
preorderD(T->lchild);
preorderD(T->rchild);
}
}
//中序递归
void inorderD(BiTree T)
{
if (T != NULL)
{
inorderD(T->lchild);
printf("%c", T->data);
inorderD(T->rchild);
}
}
//后序递归
void PostorderD(BiTree T)
{
if (T != NULL)
{
PostorderD(T->lchild);
PostorderD(T->rchild);
printf("%c", T->data);
}
}
3.c++二叉树遍历序列咋排的如果我理解的图是正确的话~~~
前序:ABDGCEHIF
中序:DGBAHEICF
后序:GDBHIEFCA
先序遍历:
1. 访问根结点
2. 按先序遍历左子树;
3. 按先序遍历右子树;
中序遍历:
1. 按中序遍历左子树;
2. 访问根结点;
3. 按中序遍历右子树;
后序遍历:
1. 按后序遍历左子树;
2. 按后序遍历右子树;
3. 访问根结点;
举个例子,拿中序遍历来说吧
第一按中序遍历左子树 左子树是B 再中序遍历B的左子树是D D没有左子树
所以第一个输出是根结点D 再访问右子树输出G
B的左子树都输出了 再输出根结点B 再访问右子树
道理就是一样的了~
4.已知二叉树,如图所示,写出二叉树的先根,中根,后根次序遍历序列很显然你还不懂的遍历一棵二叉树的原理 当你拿到一棵二叉树,无论它的形状如何的千奇百怪 我们都可以将它按照如下的方式划分 根 / \ 左子树 右子树 一棵有很多个节点的二叉树可以划分为以上的形式 也可以这么理解,只要是按以上形式组合的都可以称为是二叉树 一个仅仅只有根节点的二叉树也可以划分成以上的形式,只不过他的左右子树都为空罢了 所以,我们发现,二叉树的定义其实是一个递归定义的过程 大的二叉树是由小的二叉树构建而成的 所以,当我们考虑要遍历一棵二叉树时 也是首选递归的遍历 遍历二叉树 它的基本思想是先按照上面的形式把整棵二叉树划分为3部分 哪么接下来的工作就很简单了 我们只需要将这3部分都遍历一遍就可以了(这里用到了分而治之的思想) 而对于这3部分来说 根节点的遍历无疑是最方便的,直接访问就ok了 而对于左右子树呢? 我们不难发现,左右子树其实分别成为了两棵完整的树 他们拥有各自独立的根节点,左子树和右子树 对他们的遍历,很显然应该与刚才的遍历方法一致便可 (如果上面的都理解了,那么这个题就是小菜一碟了,如果觉得无法理解,可以按照下面的方法自己多分解几棵树) 对于这个题目,中序遍历这可二叉树 先看根节点 1 / \ 左子树 右子树 我们应该先遍历左子树 也就是下面这棵树 2 / \ 4 5 对于这棵树在进行中序遍历 我们应先遍历她的左子树 他只有一个根节点4,左右子树都为空 哪么遍历这个只有一个根节点的二叉树 先访问她的左子树,为空 返回 访问该树的根节点4 在访问右子树也为空 此时,这棵树已经被完全的遍历了 我们需要返回上一层也就是 2 / \ 4 5 这棵树 此时,她的左子树已经被访问完毕 根据中序遍历的规则 需要访问此树的根节点2 此时的访问顺序是4-2 访问了根节点 在访问右子树只有一个根节点的5(具体过程看4的访问) 5访问完毕 也就意味着 2 / \ 4 5 这棵树已经访问完了 需要返回上一层 也就是1为根的树 此时这棵树的左子树已经访问完毕 此时访问的顺序是4-2-5应该没有问题 接下来访问根节点1 在访问右子树 3 / \ 4 7 是不是觉得似曾相识??? 她的访问应该跟 2 / \ 4 5 一致 哪么最终遍历的顺序也出来了 4-2-5-1-6-3-7 ----------------------------- 花了10多分钟 希望对你有所帮助 顺便自己也复习下 呵呵 。