【数据结构】二叉树——判断是否为完全二叉树

一、思路

有完全二叉树的解释

我们想要判断二叉树是否为完全二叉树

我们可以用队列来实现

我们先将根节点入队列

再将根节点出队列,判断取出节点是否为空、

若不为空将该节点的左右节点入队列

左右节点为空也入队列

若为空则停止入队列

然后判断队列中是否有 NULL

若有则说明不是完全二叉树

若没有则说明是完全二叉树

二、代码实现

队列的代码

c 复制代码
//判断是否为完全二叉树
bool BTComplete(BTNode* php)
{
	//创建队列
	Queue p;
	QueueInit(&p);
	//将根节点入栈
	QueuePush(&p, php);
	while (!QueueEmpty(&p))
	{
		//取出队首节点并删除
		QueueDateType cp = QueueFront(&p);
		QueuePop(&p);

		//判断取出节点是否为空
		if (cp == NULL)
		{
			break;
		}
		//将左右节点入队列
		QueuePush(&p, cp->left);
		QueuePush(&p, cp->right);
	}
	//判断队列中是否有其他元素
	while (!QueueEmpty(&p))
	{
		//取出队首节点并删除
		QueueDateType cp = QueueFront(&p);
		QueuePop(&p);
		//判断节点中是否有数据
		if (cp != NULL)
		{
			QueueDesTroy(&p);
			return false;
		}
	}
	//队列销毁
	QueueDesTroy(&p);
	return true;
}
相关推荐
foundbug99919 分钟前
基于混合整数规划的电池容量优化 - MATLAB实现
数据结构·算法·matlab
自我意识的多元宇宙1 小时前
树、森林——树与二叉树的应用(哈夫曼树的构造)
数据结构
水蓝烟雨2 小时前
2071. 你可以安排的最多任务数目
数据结构·链表
晓觉儿2 小时前
【GPLT】2026年第十一届团队程序设计天梯赛赛后题解(已写2h,存档中)
数据结构·c++·算法·深度优先·图论
流年如夢3 小时前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法
葳_人生_蕤4 小时前
hot100——图
数据结构·算法
图码5 小时前
递归入门:从n到1的优雅打印之旅
数据结构·c++·算法·青少年编程·java-ee·逻辑回归·python3.11
大肥羊学校懒羊羊5 小时前
题解:计算约数个数
数据结构·c++·算法
良木生香5 小时前
【C++初阶】:STL——String从入门到应用完全指南(3)
c语言·开发语言·数据结构·c++·算法
qyzm6 小时前
Educational Codeforces Round 189 (Rated for Div. 2)
数据结构·python·算法