二叉树的初始化

本文探讨了如何根据给定的初始化数据动态建立二叉树。以数据{1, 2, 3, 4, 0, 5, 6, 0, 7}为例,介绍了使用队列实现的构建方法,队首元素出队,其左右子节点入队,0代表空节点。并提供了相关测试代码和头文件声明。" 111967411,10553048,Linux平台自制C/C++静态库教程,"['Linux开发', 'C++编程', '静态链接', '软件构建']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

给定二叉树的初始化数据,怎样动态建立一个二叉树呢?

比如我们给定这样的一组数据:{ 1, 2, 3, 4, 0, 5, 6, 0, 7 }(假设0代表空),则我们构建的二叉树是这样的:

     1
    / \
   2   3
  /   / \
 4   5  6
  \
   7

思路分析:

我们可以使用一个队列,队首出一个元素,队未进两个元素,而这两个元素正好是这个队首元素的左右节点。

参考代码如下:

TreeNode* initBTree(int elements[], int size)
{
	if (size < 1)
	{
		return NULL;
	}
	//动态申请size大小的指针数组
	TreeNode **nodes = new TreeNode*[size];
	//将int数据转换为TreeNode节点
	for (int i = 0; i < size; i++)
	{
		if (elements[i] == 0)
		{
			nodes[i] = NULL;
		}
		else
		{
			nodes[i] = new TreeNode(elements[i]);
		}
	}
	queue<TreeNode*> nodeQueue;
	nodeQueue.push(nodes[0]);

	TreeNode *node;
	int index 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值