赞
踩
二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。
目录
前序遍历结果:ABDHIEJCFKG
如图:
要点: 先根 再左 后右 (根指的是每个分叉子树的根结点,并不一定是最上面的,也有可能是相对而言的根)
思路分析:先遍历根结点A(即先根),接着遍历结点A的左孩子B(即再左),因为B结点也相当于“根结点”(对结点DEHIJ而言),所以接着要遍历结点B的左孩子D,同理接着遍历结点H,然后因为结点H为叶子,不能做“根结点”,所以要进行“后右”,即遍历H的长辈的右孩子I,同理接着遍历结点E......(跟着思路多走几遍就懂啦)
中序遍历结果:HDIBEJAFKCG
如图:
要点:先左 再根 后右
记忆方法:把所有结点间连线删除,所有结点当做实心球向下做自由落体运动落在地上,然后从左向右遍历所有结点。如下图:
后序遍历结果:HIDJEBKFGCA
如图:
要点:先左 再右 后根
记忆方法:用剪刀依次“剪断”结点间连线,每次“剪下”一个结点且从最左边开始,根据左、右、根的优先性选择最优的线“剪断”。(建议多看几遍便于理解)
层序遍历是最好理解的遍历方式,就是从最上面的根结点开始,从上到下的一层一层遍历,每一层从左到右依次遍历就行了。
如图:
- #include<stdio.h>
- #include<stdlib.h>
-
- typedef char ElemType;
-
- typedef struct BiTNode
- {
- char data;
- struct BiTNode *lchild, *rchild;
- }BiTNode, *BiTree;
-
- //创建一颗二叉树
- CreateBiTree(BiTree *T)
- {
- char c;
-
- scanf("%c",&c);
- if(' '==c)
- {
- *T=NULL;
-
- }
- else
- {
- *T = (BiTNode *)malloc(sizeof(BiTNode));
- (*T)->data = c;
- CreateBiTree(&(*T)->lchild); //用递归以创建二叉树
- CreateBiTree(&(*T)->rchild);
-
- }
- }
-
- //访问二叉树结点的具体操作
- visit(char c,int level)
- {
- printf("%c位于第%d层\n",c,level);
- }
-
- //前序遍历二叉树
- qianxubianlierchashu(BiTree T,int level)
- {
- if(T)
- {
- visit(T->data,level); //先根
- qianxubianlierchashu(T->lchild,level+1); //再左
- qianxubianlierchashu(T->rchild,level+1); //后右
-
- }
- }
-
- //中序遍历二叉树
- zhongxubianlierchashu(BiTree T,int level)
- {
- if(T)
- {
- zhongxubianlierchashu(T->lchild,level+1); //先左
- visit(T->data,level); //再根
- zhongxubianlierchashu(T->rchild,level+1); //后右
-
- }
- }
- //后序遍历二叉树
- houxubianlierchashu(BiTree T,int level)
- {
- if(T)
- {
- houxubianlierchashu(T->lchild,level+1); //先左
- houxubianlierchashu(T->rchild,level+1); //再右
- visit(T->data,level); //后根
- }
- }
-
- int main()
- {
- int level=1;
- BiTree T =NULL;
- int i;
- printf("请选择您想要使用的遍历方法(前序遍历请输入1,中序遍历请输入2,后序遍历请输入3。)");
- scanf("%d",&i);
- CreateBiTree(&T);
- if(i==1)
- {
- qianxubianlierchashu(T,level);
- }
- else if(i==2)
- {
- zhongxubianlierchashu(T,level);
- }
- else if(i==3)
- {
- houxubianlierchashu(T,level);
- }
-
-
- return 0;
- }

今天的我们很好,明天的我们更好。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。