C语言——数据结构——二叉树(前序建树,后续销毁,树中查找X)

树节点的结构体

树的构建:

通过二叉树前序遍历的方式,将数据组成树。

TreeNode* Treecreat(Data* val, size_t* pi)
{
	if (val[*pi] == '#')
	{
		(*pi)++;
		return NULL;
	}
	TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
	node->data = val[*pi];
	(*pi)++;
	node->left = Treecreat(val, pi);
	node->right = Treecreat(val, pi);
	return node;
}

其中Data为数据类型。

树的销毁:

通过二叉树后序遍历的方式进行销毁,不能用前或者中序,会导致无法销毁整个树

void Tree_destory(TreeNode* obj)
{
	if (obj == NULL)
	{
		return;
	}
	Tree_destory(obj->left);
	Tree_destory(obj->right);
	free(obj);
}

在树中搜索所需数据的树节点:

TreeNode* Tree_x(TreeNode* obj, int x)
{
	if (obj == NULL)
	{
		return NULL;
	}
	if (obj->data == x)
	{
		return obj;

	}
	TreeNode* Tem1 = Tree_x(obj->left, x);
	if (Tem1 != NULL)
	{
		return Tem1;
	}
	TreeNode* Tem2 = Tree_x(obj->right, x);
	if (Tem2 != NULL)
	{
		return Tem2;
	}
	return NULL;
}

如果找到相关数据,则返回该节点地址,若无则返回NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值