OJ现已增加邮箱找回密码功能,还没有绑定邮箱的同学们请抓紧时间,以免密码丢失无法找回


问题1217--判断完全二叉树

1217: 判断完全二叉树

时间限制: 1 Sec  内存限制: 128 MB
提交: 44  解决: 7
[提交] [状态] [讨论版] [命题人:]

题目描述

给定一颗有n个结点的二叉树,然后给出n条关系,第i条包含两个数字x,y分别代表i号结点的左右儿子的编号(如果为0代表不存在)。
判断这颗树是否为完全二叉树(请注意完全二叉树与满二叉树的区别),我们假定始终以1为根。
C语言链表定义:
typedef struct Tree{
int data;//节点编号
struct Tree* lson;//不存在是NULL
struct Tree* rson;//不存在是NULL
}Tree;


给出一个队列,提供几个函数:
void push(Tree* x);//放入队列
void pop();//弹出队头
Tree* front();//取出队头
int Empty();//判断队列是否为空,为空返回1,否则返回0

要求实现一个函数:
int check(Tree* rt);//传入根结点,判断是否为完全二叉树,是的话返回1,否则返回0

java语言:
定义的结点类如下:
class Node {
 public int value;
 public Node left;
 public Node right;
 public Node(int data) {
  this.value = data;
 }
}
根据上面给出的定义,实现 isCBT(Node head)函数,表示判断一棵树是否是完全二叉树
java函数原型是public static boolean isCBT(Node head)
 

输入

一个数字n(1<=n<=1e4)。
接下来n行,每行包含两个数字x,y代表第i个结点的左右儿子(0<=x,y<=n)
保证数据合法,即不存在a的儿子有b,b的儿子有a。

输出

如果是完全二叉树请输出"YES",否则输出"NO"(不包括双引号)

样例输入 Copy

 6
 2 3
 0 0
 4 0
 0 5
 0 6
 0 0

样例输出 Copy

NO

来源/分类