实验名称 |
实验四树和二叉树 |
实验目的 |
1、二叉树的定义、递归遍历及其它基本操作的实现 |
实验任务 |
实现二叉链表表示的二叉树,完成二叉树的基本操作: 初始化二叉树、按前序次序建立一个二叉树、检查二叉树是否为空、按任一种遍历次序(包括按前序、中序、后序、按层次)输出二叉树中的所有结点、求二叉树的深度、求二叉树中所有结点数、清除二叉树。 |
实验内容 BinaryTree.h #ifndef _BINARY_TREE_H_ #define _BINARY_TREE_H_ template <class T> class binaryTree { public: virtual int height() const = 0; virtual int size() const = 0; virtual void clear()= 0; virtual bool empty() const = 0; virtual void preOrderTraverse() const = 0; virtual void inOrderTraverse() const = 0; virtual void postOrderTraverse() const = 0; virtual void levelOrderTraverse() const = 0; virtual ~binaryTree(){}; }; #endif BinaryLinkedList.h #ifndef _BINARY_LINKLIST_H_ #define _BINARY_LINKLIST_H_ #include"BinaryTree.h" template <class T> class BinaryLinkList :public binaryTree<T> { private: struct Node { Node*left,*right; T data;
Node() : left(NULL),right(NULL) {} Node(T value, Node* l= NULL,Node*r=NULL){ data = value; left =l;right =r; } ~Node() {} }; enum Tags{Left,Right}; struct StackElement{ Node * pointer; Tags tag; StackElement(){} }; Node*root; void clear(Node*t); int size(Node*t)const; int height(Node*t)const; int leafNum(Node*t)const;
void preOrder(Node*t)const; void inOrder(Node*t)const; void postOrder(Node*t)const;
void preOrderCreate(T flag ,Node*& t);
public: BinaryLinkList() : root(NULL) {} ~BinaryLinkList(){c |
数据结构与算法_实验四二叉树
最新推荐文章于 2024-05-20 20:08:58 发布