1、 1 / 10 数据结构数据结构 课程设计报告课程设计报告 设计题目:二叉树的基本操作 专业:计算机科技 院系:计算机学院 姓名: xx xx 学号: xxxxxxxx 时间:2013 年 9 月 22 日 2 / 10 目录 一、 设计要求-3 1. 问题描述-3 2. 需求分析-3 二、 详细设计-3 1. 概要设计-3 2. 各模块源代码-3 三、 用户手册-9 四、 总结-10 3 / 10 一、一、 设计要求设计要求 1. 问题描述 设计一个与二叉树基本操作相关的演示程序。 2. 需求分析 (1) 创建二叉树。按照用户需要构建二叉树 (2) 分别以先序、中序、后序遍历二叉树 (3)
2、查找子节点元素 二、 详细设计(附源代码) 1. 概要设计 /定义二叉树数据结构 typedef struct TNode int num; struct TNode *lchild, *rchild; TNode; 2各模块源代码(包含 main( )函数) #include #include #define MaxLength 100 /定义二叉树数据结构 typedef struct TNode int num; struct TNode *lchild, *rchild; TNode; /声明全局变量 root static TNode *root=NULL; /声明插入新结点的函数(
3、根非空) int myInsert_Node(TNode *p, int n); 4 / 10 /定义插入新节点的初始函数,拆开写的目的是递归时避免不必要的判断 void Insert_Node(int n) if(root=NULL) /如果根结点不存在则创建 root=(TNode *)malloc(sizeof(TNode); root-num=n; root-lchild=NULL; root-rchild=NULL; else myInsert_Node(root, n);/非根结点的插入操作 int myInsert_Node(TNode *p, int n) TNode *tem
4、p; if(nnum) /比当前结点小,则访问左子树 if(p-lchild=NULL) /左子树为空,则插入该结点 temp=(TNode *)malloc(sizeof(TNode); temp-num=n; temp-lchild=NULL; temp-rchild=NULL; p-lchild=temp; return 0; else /左子树不为空,则与左子树进行比较 myInsert_Node(p-lchild,n); else /右子树同理 if(p-rchild=NULL) temp=(TNode *)malloc(sizeof(TNode); temp-num=n; temp-lchild=NULL; temp-rchild=NULL; p-rchild=temp; 5 / 10 return 0; else myInsert_Node(p-rchild,n); /前序递归遍历二叉树 void Pre_travel(TNode *p) if(p) printf(“%d “,p-num); Pre_travel(p-lchild); Pre_travel(p-rchild); /中序递归遍历二叉树 void Mid_travel(TNode *p) if(p) Mid_travel(p-lchild); printf(“%d “,p-num); Mid_t