判断二叉树是否为完全二叉树

判断二叉树是否为完全二叉树。完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。

创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为乌什企业提供专业的做网站、成都网站制作,乌什网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

这个问题的描述已经提示了解法,采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树。

这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。


#include
#include
using namespace std;
bool leftMost =false;
queue q;
bool ProcessChild(Node* node)
{
	if(node)
	{
		if(!leftMost)
		{
			q.push_back(node);
		}
		else
			return false;
	}
	else
		leftMost=true;
	return true;
}
bool IsCompleteBinaryTree(Node* root)//层序遍历 
{
	if(root==NULL)
		return true;
	q.push_back(root);
	while(!q.empty())
	{
		Node* node=q.pop();
		if (!ProcessChild(node->left))  
            return false;  
  
        //处理右节点  
        if (!ProcessChild(node->right))  
            return false;  
	}
	return true;

}

文章标题:判断二叉树是否为完全二叉树
文章地址:http://www.hxwzsj.com/article/ggghpj.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 企业网站制作 四川成都网站制作 成都网站制作 成都网站制作 网站设计 营销型网站建设 成都企业网站建设公司 高端网站设计 成都定制网站建设 品牌网站建设 app网站建设 网站建设方案 成都网站建设 成都网站制作 成都网站设计 成都商城网站制作 上市集团网站建设 成都网站建设 成都网站设计 专业网站设计 成都响应式网站建设 重庆网站建设