二叉树的基本操作以及相关问题的求解—C++实现

本文主要介绍二叉树这一重要数据结构,并通过C++实现相关操作。内容包括二叉树的定义,以及如何在VS2008环境下使用模板编写具有复用性的二叉树代码。为方便理解,还提供了结构体定义二叉树节点的方法。
摘要由CSDN通过智能技术生成

二叉树

二叉树是重要的数据结构,在学习中以及考试、面试中不可避免的考点,现在我就把有关二叉树的操作用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",这是二叉树前序遍历的结果,&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值