958. Check Completeness of a Binary Tree

  • 题目来源

题目来源

  • C++代码实现
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution 
{
public:
    bool isCompleteTree(TreeNode* root)
    {
        if(root == NULL)
		{
			return true;
		}
		
		return Sequencetraversal(root);
    }
private:
    bool Sequencetraversal(TreeNode* root)
	{
		queue<TreeNode*> dataqueue;
		TreeNode* l = NULL;
		TreeNode* r = NULL;
		bool leaf = false;
			
		dataqueue.push(root);
		
		while(!dataqueue.empty())
		{
			root = dataqueue.front();
			dataqueue.pop();
			l = root->left;
			r = root->right;
			
			/*一个节点有右孩子没有左孩子,则必不是完全二叉树*/
			if(root->right != NULL && root->left == NULL)
			{
				return false;
			}
			
			// leaf = true 则表示开启了叶节点的判断
			//
			if(leaf && (r != NULL || l != NULL) )
			{
				return false;
			}
			
			if(l != NULL)
			{
				dataqueue.push(root->left);
			}
			
			if(r != NULL)
			{
			    dataqueue.push(root->right);	
			}
			else
			{
				leaf = true;  //有右孩子没有左孩子 开启叶节点的判断
			}
		}
        
        return true;
	}
    
};
posted @   尚修能的技术博客  阅读(154)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
点击右上角即可分享
微信分享提示