赞
踩
二叉树
二叉树是重要的数据结构,在学习中以及考试、面试中不可避免的考点,现在我就把有关二叉树的操作用C++总结 一下,可能有些同学使用的是C语言,但是无论C语言还是c++,对于二叉树的操作方法都是一样的,之后,我也会抽空给出C语言的实现。
本次实现是在vs2008的一个集成开发环境,为了增强代码的复用性,此次编写使用了模版,关于模版可以参考的我的另外一篇博客:http://blog.csdn.net/dy_1024/article/details/78643644,如果大家在使用的时候,不实用模版,只需把代码中的模版类型T,换成你需要的类型即可。
首先我们用结构体给出二叉树结点的结构:
- template<class T>//如果大家不使用模版的话,把这行代码去掉,将结构体中的T该成你需要的类型即可
- struct BinTreeNode{
- BinTreeNode(const T& data):_left(NULL),_right(NULL),_data(data){}//二叉树结点的构造函数,方便之后给出新结点
- BinTreeNode* _right;//右子树
- BinTreeNode* _left;//左子树
- T _data;//数据域
- };
因为使用c++,所以我们将二叉树封装成一个二叉树类,进行管理,同样使用模版:
- template<class T>
- class BinTree
- {
- typedef BinTreeNode<T> Node;//将之前的类此重定义,方便以后的使用
- typedef Node* PNode;
- public:
- BinTree():_pRoot(NULL){}
- //构造函数里面使用的创建二叉树的函数,
- void _CreatBinTree(PNode& pRoot,const T* array,size_t size,size_t& index,const T& invalid)
- {
- if(index<size && array[index] != invalid)
- {
- pRoot = new Node(array[index]);
- _CreatBinTree(pRoot->_left,array,size,++index,invalid);
- _CreatBinTree(pRoot->_right,array,size,++index,invalid);
- }
- }
- //构造函数,在给构造函数传参的时候,我们定义:char *array ="ABD###CE##F",这是二叉树前序遍历的结果,&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。