二叉树链式存储结构代码实现

本文提供了二叉树链式存储结构的C语言和C++实现,包括创建、拷贝、销毁二叉树,以及各种遍历、节点操作等算法,详细阐述了递归和非递归方法。
摘要由CSDN通过智能技术生成

上一篇博客已经介绍过实际内容了,这一篇直接上干货代码了。
结构体
前面写的是用c语言写的,用的也是递归的方法

typedef char BTDataType;
typedef struct BTNode
{
   
	struct BTNode* left;
	struct BTNode* right;
	BTDataType data;
}BTNode;

1、创建二叉树

typedef struct ReturnType{
   
	BTNode *root;
	int used;
}ReturnType;
// 1. 创建二叉树 
ReturnType CreateBinTree(BTDataType* array, int size)
{
   
	BTDataType rootValue = array[0];
	if (rootValue == '#')
	{
   
		ReturnType returnValue;
		returnValue.root = NULL;
		returnValue.used = 1;
		return returnValue;
	}
	BTNode *root = (BTNode*)malloc(sizeof(BTNode));
	root->data = rootValue;
	ReturnType left = CreateBinTree(array + 1 + left.used, size - 1 - left.used);
	ReturnType right = CreateBinTree(array + 1 + left.used, size - 1 - left.used);

	root->left = left.root;
	root->right = right.root;

	ReturnType returnValue;
	returnValue.root = root;
	returnValue.used = 1 + left.used + right.used;
	return returnValue;

}

2、拷贝二叉树

// 拷贝二叉树 
BTNode* CopyBinTree(BTNode* pRoot)
{
   
	if (pRoot == NULL)
	{
   
		return NULL;
	}
	BTNode *root = (BTNode*)malloc(sizeof(BTNode));
	root->data = pRoot->data;

	root->left = CopyBinTree(pRoot->left);
	root->right = CopyBinTree(pRoot->right);
	return root;
}

3、销毁二叉树

// 销毁二叉树 
void DestroyBinTree(BTNode* pRoot)
{
   
	if (pRoot != NULL)
	{
   
		if (pRoot != NULL)
		{
   
			pRoot = NULL;
		}
		if (pRoot->left != NULL)
		{
   
			DestroyBinTree(pRoot->left);
			pRoot->left = NULL;
		}
		if (pRoot->right != NULL)
		{
   
			DestroyBinTree(pRoot->right);
			pRoot->right = NULL;
		}
	}
}

4、二叉树的三种遍历方式 (递归方式)

// 前序遍历
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值