赞
踩
- void InorderTraversal( BinTree BT );
- void PreorderTraversal( BinTree BT );
- void PostorderTraversal( BinTree BT );
- void LevelorderTraversal( BinTree BT );
其中BinTree
结构定义如下:
- typedef struct TNode *Position;
- typedef Position BinTree;
- struct TNode{
- ElementType Data;
- BinTree Left;
- BinTree Right;
- };
要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
- #include <stdio.h>
- #include <stdlib.h>
-
- typedef char ElementType;
- typedef struct TNode *Position;
- typedef Position BinTree;
- struct TNode{
- ElementType Data;
- BinTree Left;
- BinTree Right;
- };
-
- BinTree CreatBinTree(); /* 实现细节忽略 */
- void InorderTraversal( BinTree BT );
- void PreorderTraversal( BinTree BT );
- void PostorderTraversal( BinTree BT );
- void LevelorderTraversal( BinTree BT );
-
- int main()
- {
- BinTree BT = CreatBinTree();
- printf("Inorder:"); InorderTraversal(BT); printf("\n");
- printf("Preorder:"); PreorderTraversal(BT); printf("\n");
- printf("Postorder:"); PostorderTraversal(BT); printf("\n");
- printf("Levelorder:"); LevelorderTraversal(BT); printf("\n");
- return 0;
- }
- /* 你的代码将被嵌在这里 */
- Inorder: D B E F A G H C I
- Preorder: A B D F E C G H I
- Postorder: D E F B H G I C A
- Levelorder: A B C D F G I E H
前序、中序及后序使用的方法都一样,知识输出的位置不一样。其实就是在第几次遍历时输出节点(每个节点被访问的次数都为三次)。层序遍历,可以用队列的方法求解,但在函数题中,一般不会再创建一个结构体,只用把队列的思想用数组表达即可。
- void InorderTraversal( BinTree BT ){
- if(BT){
- InorderTraversal(BT->Left);
- printf(" %c",BT->Data);
- InorderTraversal(BT->Right);
-
- }
- }
- void PreorderTraversal( BinTree BT ){
- if(BT){
- printf(" %c",BT->Data);
- PreorderTraversal(BT->Left);
- PreorderTraversal(BT->Right);
-
- }
- }
- void PostorderTraversal( BinTree BT ){
- if(BT){
- PostorderTraversal(BT->Left);
- PostorderTraversal(BT->Right);
- printf(" %c",BT->Data);
-
- }
- }
- void LevelorderTraversal( BinTree BT ){
- BinTree a[101];
- int i=0,j=0;
- a[0] = BT;
- while(BT){
- if(BT->Left!=NULL){
- a[++i] = BT->Left;
- }
- if(BT->Right!=NULL){
- a[++i] = BT->Right;
- }
-
- BinTree temp = a[j];
- printf(" %c",temp->Data);
- if(i==j){
- break;
- }
- j++;
- BT = a[j];
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。