二叉树遍历实验报告.docxVIP

  • 2
  • 0
  • 约1.84千字
  • 约 7页
  • 2021-03-11 发布于山东
  • 举报
数据结构实验报告 报告题目: 二叉树的基本操作 学生班级: 学生姓名: 学号: 一.实验目的 1、 基本要求:深刻理解二叉树性质和各种存储结构的特点及适用范围;掌握用指针类型描述、 访问和处理二叉树的运算; 熟练掌握二叉树的遍历算法;。 2、 高要求 : 在遍 算法的基 上 二叉 更复 操作算法; 哈夫曼 、哈夫曼 的作用和意 ; 掌握 与森林的存 与便利。 . 学 : 内 学 : 3 学 外 学 : 6 学 三. 目 1. 以二叉 表 存 构, 二叉 的 建、遍 ( 型: 型) 1) 描述:在主程序中 一个 的菜 , 分 用相 的函数功能: 1?建立 2?前序遍 3?中序遍 4?后序遍 5?求二叉 的高度 6?求二叉 的叶子 点 7?非 中序遍 0? 束 2) 要求:在程序中定 下述函数,并 要求的函数功能: CreateBinTree(BinTree T): 按从 入的前序序列, 建 Preorder(BinTree T) :前序遍 ( ) Inorder(BinTree T) :中序 ( ) 遍 Postorder(BinTree T): 后序遍 ( ) PostTreeDepth(BinTree T) : 的高度 leaf(BinTree T): 的叶子 点 InorderN(BinTree T) :中序 ( 非 ) 遍 数据 构 二叉 表存 数据 型定 typedef struct node{ TElemType data; struct node *lchild,*rchild; }BinTNode; 元素 型: int CreateBinTree(BinTree T); void Preorder(BinTree T); void Inorder(BinTree T); void Postorder(BinTree T); void InorderN(BinTree T); int PostTreeDepth(BinTree T); int leaf(BinTree T); 2、编写算法实现二叉树的非递归中序遍历和求二叉树高度。 1)问题描述:实现二叉树的非递归中序遍历和求二叉树高度 2)实验要求:以二叉链表作为存储结构 实现过程: 1、实现非递归中序遍历代码: void CBiTree::InorderN(BinTree T) { BinTree stack[MAX],p; int top=0;p=T; do { while(p!=NULL) { stack[top]=p;; top=top+1; p=p-lchild; }; if(top0) { top=top-1; p=stack[top]; printf(%3c,p-data ); p=p-rchild; } } while(p!=NULL||top!=0); } 2、求二叉树高度: int CBiTree::PostTreeDepth(BinTree T) { int l,r,max; if(T!=NULL) { l=PostTreeDepth(T-lchild ); r=PostTreeDepth(T-rchild ); max=lr?l:r; return(max+1); } else return(0); } 实验步骤: 1) 新建一个基于  Console Application  的工程,工程名称  BiTreeTest  ; 2) 新建一个类 CBiTree 二叉树类。 3)在类 CBiTree 的头文件上方定义二叉链表存储数据类型结构体 BiTNode。 4) 在类 CBiTree 中定义函数 CreateBinTree ();Preorder() ;Inorder() Postorder();PostTreeDepth();InorderN() ;  ; 5 )  实现函数  CreateBinTree  ( ) ;  Preorder()  ;  Inorder()  ; Postorder();PostTreeDepth();InorderN()  ; 6) 在主函数中定义对象,通过对象调用函数,实现各个函数的操作。 运行结果:

文档评论(0)

1亿VIP精品文档

相关文档