判断是否为完全二叉树 Check whether a binary tree is a complete tree or not

原创 2016年08月28日 22:24:43

今天同学面试,问到一个题,判断一个树是否是完全的,他说简单,可是我觉得又不是那么容易,难道我真的这么渣么,好吧,慢慢进步吧,自己写的,感觉挺对的。

下面是代码

//Tree.h

#ifndef TREE_H
#define TREE
struct TreeNode{
	TreeNode *left;
	TreeNode *right;
	int val;
	TreeNode(int);
};
#endif


//tree.cpp
#include<iostream>
#include "Tree.h"
TreeNode::TreeNode(int v):left(NULL),right(NULL),val(v){}

//main.cpp
#include<iostream>
#include "tree.h"
#include<queue>
using namespace std;

bool isCompleteTree(TreeNode *root){
	if(root == NULL){
		return true;
	}
	queue<TreeNode *> q;
	q.push(root);
	bool end = false;
	while(!q.empty()){
		TreeNode * node = q.front();
		q.pop();
		if(node->left && !end){
			q.push(node->left);
		}else if(!end && node->left == NULL){
			end = true;
		}else if(end && node->left){
			return false;
		}
		if(!end && node->right){
			q.push(node->right);
		}else if(!end && node->right  == NULL){
			end = false;
		}else if(end &&  node->right ){
			return false;
		}
	}
	return true;

}
int main(){
	 TreeNode *root     = new TreeNode(1);
	 root->left         = new TreeNode(2);
	 root->right        = new TreeNode(3);
	 //root->right->left  = new TreeNode(10);	
	 //root->left->left   = new TreeNode(4);
	 // root->left->right  = new TreeNode(5);
	 //root->right->right = new TreeNode(6);
	 cout << isCompleteTree(root)<<endl;
}

今天感觉GeeksforGeeks听不错的。

上面的代码有不对或者 不标准的地方,指正一下各位。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

pat1123 Is It a Complete AVL Tree,平衡二叉树的建立,完全二叉树判断,层序

本题解决两个问题,一个是建立平衡二叉树,第二个数判断此二叉树是否为完全二叉树。至于二叉树的层序遍历,可以采用经典的方法,以队列为辅助数据结构,层序输出结点,并且正好可以在这一步里来解决“完全二叉树”的...

1110. Complete Binary Tree (25)[完全二叉树]

1. 原题:https://www.patest.cn/contests/pat-a-practise/1110 2. 思路: 题意:完全二叉树题。判断一棵树是否CBT。 思路: 完全二叉树的...

1110. Complete Binary Tree (25) 完全二叉树、树的遍历

时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a tree, you are ...

Leetcode 222 - ount Complete Tree Nodes(二分 + 完全二叉树)

题意给一个完全二叉树,求节点数目。思路首先,假设完全二叉树的深度为h,那么0到h - 1都是满的,只有h不一定是满的。算法1我们只需要知道最后一层的最后一个不是NULL的节点是哪一个就可以了。我们假设...
  • Lzedo
  • Lzedo
  • 2017-02-13 14:28
  • 92

leetcode222---Count Complete Tree Nodes(求完全二叉树节点数)

问题描述:Given a complete binary tree, count the number of nodes.In a complete binary tree every level, ...

1064. Complete Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise

题目信息1064. Complete Binary Search Tree (30)时间限制100 ms 内存限制65536 kB 代码长度限制16000 BA Binary Search Tre...

check a tree is balanced or not

Question: Given a binary tree, check whether it is balanced or not. Analyze: Consider a heigh...

Educational Codeforces Round 18 -- D. Paths in a Complete Binary Tree(二叉树模拟)

题意: 给你一棵完全二叉树, 要求从某个结点出发, 开始行走,可以向上走,向左走,向右走, 模拟这个过程。 思路: 观察那个二叉树的形状, 直接二分走就可以找到每一个结点。 我们先找到那个结点...

How To Check Whether Physical Standby is in Sync with the Primary or Not?

The following tips will help you in monitoring sync between primary and standby databases. How To C...

1043. Is It a Binary Search Tree (25)【二叉树】——PAT (Advanced Level) Practise

题目信息1043. Is It a Binary Search Tree (25)时间限制400 ms 内存限制65536 kB 代码长度限制16000 BA Binary Search Tree...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)