欢迎来到天天文库
浏览记录
ID:15664434
大小:94.00 KB
页数:21页
时间:2018-08-04
《山东大学数据结构实验报告六》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、山东大学软件工程学院数据结构课程实验报告 学号:姓名:班级:软件工程2014级2班实验题目:二叉树操作实验学时:实验日期:2015.11.25实验目的:掌握二叉树的基本概念,链表描述方法;遍历方法。硬件环境: 实验室软件环境:VistualStudio2013实验步骤与内容:实验内容:1、创建二叉树类。二叉树的存储结构使用链表。2、提供操作:前序遍历、中序遍历、后序遍历、层次遍历、计算二叉树结点数目、计算二叉树高度。3、对建立好的二叉树,执行上述各操作。4、接收键盘录入的二叉树前序序列和中序序列(各元素各不相同),输出该二叉树的后序序列。代码体:binarytreenode.h#if
2、ndefBINARYTREENODE_H#defineBINARYTREENODE_HclassBinaryTreeNode{friendclassBinaryTree;public:BinaryTreeNode(){LeftChild=RightChild=0;}BinaryTreeNode(constint&e){data=e;LeftChild=RightChild=0;}BinaryTreeNode(constint&e,BinaryTreeNode*l,BinaryTreeNode*r){data=e;LeftChild=l;RightChild=r;}private:Bi
3、naryTreeNode*LeftChild,*RightChild;intdata;};#endifbinarytree.h#ifndefBINARYTREE_H#defineBINARYTREE_H#includeusingnamespacestd;#include"binarytreenode.h"classBinaryTree{public:BinaryTree(){root=0;num=0;}boolIsEmpty(){returnroot==0;}boolRoot(int&x);voidMakeTree(constint&element,BinaryT
4、ree&left,BinaryTree&right);voidBreakTree(int&element,BinaryTree&left,BinaryTree&right);intHeight()const{returnHeight(root);}intNumNode(){num=1;NumNode(root);returnnum;}voidPreOrder(){PreOrder(root);cout<5、oidLevelOrder(){LevelOrder(root);cout<root=root;root=0;}private:voidVisit(BinaryTreeNode*);intHeight(BinaryTreeNode*)const;voidNumNode(BinaryTreeNode*);voidPreOrder(BinaryTreeNode*);voidInOrder(BinaryTreeNode*);voidPostOrder(BinaryTreeNode*);voidLevelOrder(B6、inaryTreeNode*);BinaryTreeNode*root;intnum;};#endifbinarytree.cpp#include#include#includeusingnamespacestd;#include"binarytree.h"voidBinaryTree::Visit(BinaryTreeNode*t){cout<data<<"";}voidBinaryTree::PreOrder(BinaryTreeNode*t){stacks;while(t){Visit(t7、);if(t->RightChild)s.push(t->RightChild);if(t->LeftChild)s.push(t->LeftChild);if(s.empty()){return;}else{t=s.top();s.pop();}}}voidBinaryTree::InOrder(BinaryTreeNode*t){stacks;BinaryTreeNode*pre=NULL;while(t){if(t-
5、oidLevelOrder(){LevelOrder(root);cout<root=root;root=0;}private:voidVisit(BinaryTreeNode*);intHeight(BinaryTreeNode*)const;voidNumNode(BinaryTreeNode*);voidPreOrder(BinaryTreeNode*);voidInOrder(BinaryTreeNode*);voidPostOrder(BinaryTreeNode*);voidLevelOrder(B
6、inaryTreeNode*);BinaryTreeNode*root;intnum;};#endifbinarytree.cpp#include#include#includeusingnamespacestd;#include"binarytree.h"voidBinaryTree::Visit(BinaryTreeNode*t){cout<data<<"";}voidBinaryTree::PreOrder(BinaryTreeNode*t){stacks;while(t){Visit(t
7、);if(t->RightChild)s.push(t->RightChild);if(t->LeftChild)s.push(t->LeftChild);if(s.empty()){return;}else{t=s.top();s.pop();}}}voidBinaryTree::InOrder(BinaryTreeNode*t){stacks;BinaryTreeNode*pre=NULL;while(t){if(t-
此文档下载收益归作者所有