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

一、思路

有完全二叉树的解释

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

我们可以用队列来实现

我们先将根节点入队列

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

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

左右节点为空也入队列

若为空则停止入队列

然后判断队列中是否有 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;
}
相关推荐
Chloeis Syntax14 小时前
栈和队列笔记2025-10-12
java·数据结构·笔记·
404未精通的狗14 小时前
(数据结构)线性表(下):链表分类及双向链表的实现
数据结构·链表
晨非辰15 小时前
【面试高频数据结构(四)】--《从单链到双链的进阶,读懂“双向奔赴”的算法之美与效率权衡》
java·数据结构·c++·人工智能·算法·机器学习·面试
im_AMBER15 小时前
数据结构 03 栈和队列
数据结构·学习·算法
卿言卿语17 小时前
CC1-二叉树的最小深度
java·数据结构·算法·leetcode·职场和发展
仰泳的熊猫17 小时前
LeetCode:889. 根据前序和后序遍历构造二叉树
数据结构·c++·算法
Emilia486.18 小时前
【Leetcode&nowcode&数据结构】单链表的应用(初阶)
c语言·数据结构·算法·leetcode
仰泳的熊猫19 小时前
LeetCode:700. 二叉搜索树中的搜索
数据结构·c++·算法·leetcode
杰 .20 小时前
C++ Hash
数据结构·c++·哈希算法
韧竹、20 小时前
数据结构之单链表
数据结构·链表