数据结构实验报告-树与二叉树.doc

本章共5道实验题目。 一、二叉树的先序遍历 1、定义二叉树的二叉链表存储结构 2、按照先序遍历的形式创建二叉链表(CreateBiTree) 3、定义二叉树的先序遍历函数(PreOrderTraverse) 4、在主函数中调用PreOrderTraverse函数,输出先序遍历序列 例如: 建立二叉链表,读入字符的顺序为: ABC##DE#G##F###(其中#表示空树) 程序输出为: ABCDEGF 程序: #includeiostream using namespace std; typedef struct BiTNode{ char data; struct BiTNode *Left; struct BiTNode *Right; }BiTNode,*BiTree; void CreateBiTree(BiTree T) { char ch; cinch; if(ch==#) T=NULL; else { T=new BiTNode; T-data=ch; CreateBiTree(T-Left); CreateBiTree(T-Right); } } void PreOrderTraverse(BiTree T) { if(T) { coutT-data; PreOrderTraverse(T-Left); PreOrderTraverse(T-Right); } } int main() { BiTree T; CreateBiTree(T); PreOrderTraverse(T); return 0; } 二、二叉树的中序和后序遍历 1、定义二叉树的二叉链表存储结构 2、按照先序遍历的形式创建二叉链表(CreateBiTree) 3、定义二叉树的中序和后序遍历函数(InOrderTraverse和PostOrderTraverse) 4、在主函数中调用InOrderTraverse和PostOrderTraverse函数,输出中序和后序遍历序列。 例如: 建立二叉链表,读入字符的顺序为: ABC##DE#G##F###(其中#表示空树) 程序输出为: CBEGDFA CGEFDBA 程序: #includeiostream using namespace std; typedef struct BiNode{ //二叉链表定义 char data; struct BiNode *lchild,*rchild; }BiTNode,*BiTree; //用算法5.3 先序遍历的顺序建立二叉链表 void CreateBiTree(BiTree T){ char ch; cin ch; if(ch==#) T=NULL; //递归结束,建空树 else{ T=new BiTNode; T-data=ch; //生成根结点 CreateBiTree(T-lchild); //递归创建左子树 CreateBiTree(T-rchild); //递归创建右子树 } } //在此处定义 InOrderTraverse函数 void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T-lchild); coutT-data; InOrderTraverse(T-rchild); } } //在此处定义 PostOrderTraverse函数 void PostOrderTraverse(BiTree T) { if(T) { PostOrderTraverse(T-lchild); PostOrderTraverse(T-rchild); coutT-data; } } int main(){ BiTree T; //cout请输入建立二叉链表的序列:\n; CreateBiTree(T); //cout 中序序遍历的结果为:\n; //在此处调用InOrderTraverse函数 InOrderTraverse(T); coutendl; //cout 中序序遍历的结果为:\n; //在此处调用PostOrderTraverse函数 PostOrderTraverse(T); return 0; } 三

文档评论(0)

1亿VIP精品文档

相关文档