4-9 二叉树的遍历 (25分)
2016-07-20 18:11
344 查看
4-9 二叉树的遍历 (25分)本题要求给定二叉树的4种遍历。
函数接口定义:
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
#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(){ BinTree BT[9]; int i; for(i=0;i<9;i++) { BT[i]=(BinTree)malloc(sizeof(struct TNode)); BT[i]->Data=(char)(65+i); } BT[0]->Left=BT[1]; BT[0]->Right=BT[2]; BT[1]->Left=BT[3]; BT[1]->Right=BT[5]; BT[2]->Left=BT[6]; BT[2]->Right=BT[8]; BT[3]->Left=NULL; BT[3]->Right=NULL; BT[4]->Left=NULL; BT[4]->Right=NULL; BT[5]->Left=BT[4]; BT[5]->Right=NULL; BT[6]->Left=NULL; BT[6]->Right=BT[7]; BT[7]->Left=NULL; BT[7]->Right=NULL; BT[8]->Left=NULL; BT[8]->Right=NULL; return BT[0];}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;}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 q[100]; BinTree p; int head=0,tail=0; if(!BT) return; if(BT){ q[tail++]=BT; while(tail!=head){ p=q[head++]; printf(" %c",p->Data); if(p->Left) q[tail++]=p->Left; if(p->Right) q[tail++]=p->Right; } }}
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 软件 bug 的生命周期
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- 文件遍历排序函数
- C#数据结构之顺序表(SeqList)实例详解
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- Lua 学习笔记之C API 遍历 Table实现代码
- Lua教程(七):数据结构详解
- C#算法函数:获取一个字符串中的最大长度的数字
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#遍历文件夹后上传文件夹中所有文件错误案例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一