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

一、思路

有完全二叉树的解释

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

我们可以用队列来实现

我们先将根节点入队列

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

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

左右节点为空也入队列

若为空则停止入队列

然后判断队列中是否有 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;
}
相关推荐
念越7 小时前
题库、练习与错题本代码阅读
开发语言·数据结构
垆边人似月.8 小时前
华为题:盛最多水的容器
数据结构·算法
HPtiger8 小时前
数据结构——插入排序
数据结构·排序算法
All for pursuit.9 小时前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划
Logic10110 小时前
C语言/数据结构位运算题解:异或XOR找出套碗游戏中的“幸运碗“——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
y1su10 小时前
Leetcode 单调栈模板
java·开发语言·数据结构·算法·leetcode
一只旭宝10 小时前
树的家族全景:从二叉树到 B+ 树
数据结构
垆边人似月.10 小时前
华为题:每日温度
数据结构·c++·算法
Peregrine911 小时前
数据结构 - > 树和二叉树
数据结构·算法
j7~11 小时前
【算法】专题四.前缀和:一维二维模板,配套 LeetCode 真题,结合同余定理、哈希前缀和,搞定子数组与子矩阵区间求和问题。
数据结构·c++·算法·前缀和·优选算法