栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode - 958. 二叉树的完全性检验

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode - 958. 二叉树的完全性检验

leetcode - 958. 二叉树的完全性检验 题目

代码
#include 
#include 
using namespace std;

typedef struct TreeNode{
	int val;
	struct TreeNode *left, *right;
}TreeNode, *BiTree;

void create(BiTree &root){
	int tn;
	cin>>tn;
	if(tn == -1){
		root = NULL;
		return;
	}
	root = new TreeNode;
	root->val = tn;
	create(root->left);
	create(root->right);
}

bool isCompleteTree(TreeNode* root) {
	if(!root){
		return true;
	}
	queue q;
	q.push(root);
	int num = 1;
	int flag = 1;
	while(!q.empty()){
		int n = q.size();
		for(int i = 0; i < n; i++){
			TreeNode *node = q.front();
			q.pop();
			if(flag == 0 && (node->left || node->right)){
				return false;
			}
			if(node->left || node->right){
				if(n != num){
					return false;
				}
				if(!node->left && node->right){
					return false;
				}
				if(node->left){
					q.push(node->left);
				}
				if(node->right){
					q.push(node->right);
				}
			}else{
				flag = 0;
			}
			if(node->left && !node->right){
				flag = 0;
			}
		}
		num *= 2;
		flag = 1;
	}
	return true;
}

int main(){
	TreeNode* root;
	bool res;
	create(root);
	res = isCompleteTree(root);
	if(res){
		cout<<"true";
	}else{
		cout<<"false";
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号