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

一、思路

有完全二叉树的解释

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

我们可以用队列来实现

我们先将根节点入队列

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

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

左右节点为空也入队列

若为空则停止入队列

然后判断队列中是否有 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;
}
相关推荐
一起养小猫1 小时前
LeetCode100天Day9-无重复字符的最长子串与赎金信
java·开发语言·数据结构·leetcode
white-persist1 小时前
【内网运维】Netstat与Wireshark:内网运维溯源实战解析
运维·网络·数据结构·测试工具·算法·网络安全·wireshark
啊董dong2 小时前
noi-2025年12月23号作业
数据结构·c++·算法·noi
夏乌_Wx2 小时前
练题100天——DAY35:棒球比赛+数组的度
数据结构
youngee112 小时前
hot100-63买卖股票的最佳时机
数据结构·算法·leetcode
爱吃生蚝的于勒2 小时前
【Linux】零基础深入学习动静态库+深入学习地址
linux·运维·服务器·c语言·数据结构·c++·学习
万象.3 小时前
redis通用命令与数据结构
数据结构·数据库·redis
小宇的天下3 小时前
Calibre : 一个简单的DRC rule file
数据结构
C雨后彩虹3 小时前
ReentrantLock入门:核心特性与基本使用
java·数据结构·reentrantlock·lock
你撅嘴真丑3 小时前
短信计费 和 甲流病人初筛
数据结构·c++·算法