数据结构学习——二叉树的链式描述
2020-02-01 01:08
337 查看
首先,跟之前一样,先给出二叉树结点的类
template<class T> struct binaryTreeNode { T element; binaryTreeNode<T> *leftChild,//左子树 *rightChild;//右子树 //二叉树节点有三个构造函数 binaryTreeNode() { leftChild=rightChild=NULL; } binaryTreeNode(const T& theElement) { element=theElement; leftChild=rightChild=NULL; } binaryTreeNode(const T& theElement,binaryTreeNode *theLeftChild,binaryTreeNode *theRightChild) { element=theElement; leftChild=theLeftChild; rightChild=theRightChild; } };
接下来是二叉树的抽象类
template<class T> class binaryTree { public: virtual ~binaryTree(){} virtual bool empty()const =0; virtual int size()const=0; virtual void preOrder(void(*)(T*))=0;//前序遍历 virtual void inOrder(void(*)(T*))=0;//中序遍历 virtual void postOrder(void(*)(T*))=0;//后序遍历 virtual void levelOrder(void(*)(T*))=0;//层次遍历 };
下面阿伟嫖的书上代码,目前还是有些看不懂emm(二叉树的链式描述,继承binaryTree)
template<class T> class linkedBinaryTree:public binaryTree<binaryTreeNode<E> > { private: binaryTreeNode<E> *root;//指向根的指针 int treeSize;//树的节点个数 static void (*visit)(binaryTreeNode<E>*);//访问函数 static void preOrder(binaryTreeNode<E> *t); static void inOrder(binaryTreeNode<E> *t); static void postOrder(binaryTreeNode<E> *t); static void dispose(binaryTreeNode<E> *t){delete t;} public: linkedBinaryTree() { root=NULL; treeSize=0; } ~linkedBinaryTree() { erase(); } bool empty()const { return treeSize==0; } int size()const { return treeSize; } void preOrder(void (*theVisit)(binaryTreeNode<E>*)) { visit=theVisit; preOrder(root); } void inOrder(void (*theVisit)(binaryTreeNode<E>*)) { visit=theVisit; inOrder(root); } void postOrder(void (*theVisit)(binaryTreeNode<E>*)) { visit=theVisit; postOrder(root); } void levelOrder(void (*)(binaryTreeNode<E> *)); void erase() { postOrder(dispose); root=NULL; treeSize=0; } };
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 数据结构学习-二叉树-链式结构、特殊二叉树、性质、遍历、遍历应用
- 数据结构复习:链式二叉树创建和递归遍历
- 数据结构:栈的链式实现(C语言描述)
- 数据结构学习-二叉树的基本运算
- *第十周*数据结构实践项目一【二叉树的链式存储算法库】
- 【数据结构学习】-二叉树的概念与遍历
- 【学习点滴-数据结构-二叉树】整数序列放入二叉树中
- 数据结构学习之堆栈(链式存储)
- 一步一步学习数据结构(4)-树和二叉树基础知识
- 数据结构学习----线性表的链式表示之升序排序的单链表(Java实现)
- 数据结构C++描述学习笔记
- 数据结构学习:利用链表建立二叉树
- 【郝斌数据结构自学笔记】60-65_树的定义_树的专业术语解释_树的分类_二叉树连续存【重点】_二叉树的链式存储_普通树的存储
- 数据结构--二叉树--节点的修改(链式结构--队列)
- 数据结构--二叉树--中序非递归遍历二叉树(链式结构)
- 数据结构学习之二叉树小结
- 数据结构学习笔记8——简单二叉树的实现与遍历
- 数据结构学习笔记-栈的链式存储(C语言实现)
- 【数据结构】之二叉树(Java语言描述)
- 数据结构学习(C++)—二叉树