二叉树实验报告_3.docVIP

  • 3
  • 0
  • 约3.87千字
  • 约 9页
  • 2023-08-22 发布于湖北
  • 举报
数据结构实验报告 专业班级:计算机科学与技术 姓名:。。。。。。 学号:。。。。。。。 一、实验目的和要求 上机学习二叉树。 二、实验内容 实现二叉树的各项算法并掌握其用法如二叉树的构造,先中后序遍历,层次遍历等等 三、实验过程 3.1 设计算法 1.二叉树的构造:通过对二叉树的先序序列的扩展来构造二叉树 2.求二叉树的高度:二叉树的高度等于子树高度加一,递归求出二叉树高度。 3二叉树的层次遍历:初始化队列,使根节点进队。下面开始循环,终止条件为队列为空。是队头结点出队,并使它的左孩子和右孩子一次进队(如果存在) 4.求二叉树叶子结点:遍历二叉树,如果左孩子和右孩均不存在,则该结点为叶子结点。 3.2 数据结构的选择和概要设计 数据结构的选择:学习二叉树结构,利用队列实现其中的层次遍历。 概要设计:利用类将二叉树和其属性封装起来,定义结构体变量作为结点。 四、测试及结果分析 输入空树 输入空树 五、实验收获 通过课堂学习以及课后的上机实习,我学习到了树和二叉树的性质,以及相关算法。如二叉树的遍历,求二叉树的高度。并在这些算法实现的过程中对递归有了更加深的了解,并且认识到了递归的重要性 六、附录(源代码) #includeiostream.h #includequeue using namespace std; struct node{ char data; node*lchild; node*rchild; int num; }; class Tree{ public: Tree(){ cout请输入data ; creat(root); } bool empty(){ if(root==NULL) return true; return false; } void pre_number(){ if(empty()) return; T_pre_number(this-root); } void pre_travel(){ if(empty()) return; int i=1; node* t=this-root; T_pre_travel(t,i); coutendlendl; } void preorder(){ if(empty()) return; node* t=this-root; cout先序:; T_preorder(t); coutendl; } void inorder(){ if(empty()) return; cout中序:; node* t=this-root; T_inorder(t); coutendl; } void postorder(){ if(empty()) return; cout后序:; node* t=this-root; T_postorder(t); coutendl; } void high(){// if(empty()) return; cout该二叉树的高度为T_high(this-root)endl; } void leaf_value(){// if(empty()) return; node* t=this-root; cout叶子结点:; T_leaf_value(t); coutendl; } void level_order(){ // if(empty()) return; node*T=this-root; T_level_order(T); } private: void T_pre_travel(node*T,int i);// void Tree::T_preorder(node*T); // void Tree::T_inorder(node*T); // void Tree::T_postorder(node*T); // int T_high(node* T);// void T_leaf_value(node*T);// void creat(node* T);// void T_level_order(node*T); void T_pre_number(node* root); node*root; }; //先序输出结点及其编号 void Tree::T_pre_number(node*T) { if(T!=NULL){ coutT-data的编号是T-numendl; T_pre_n

文档评论(0)

1亿VIP精品文档

相关文档