给定一颗有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)