测试一棵二叉树是否为完全二叉树

来源:互联网 发布:上海大学网络教学中心 编辑:程序博客网 时间:2024/05/15 05:38

完全二叉树的定义我就不说了,可以去百度,这里的思想是,在检测到某节点A的左孩子或者右孩子为空后将标志位置0,如果在这之后又检测到其他节点左孩子或者右孩子非空,那么就可以判断这不是一棵完全二叉树。为了达到从上到下,从左往右的扫描顺序,我们使用层次遍历。代码如下

 /**     * 检测一棵树是不是完全二叉树     * 这里采用层次遍历在遍历到某节点的子节点空时将flag置为0,之后若有其他节点的子节点存在则返回false     * @param node     * @return     */    public boolean checkIfCompleteTree(Node node){    Node[] queue=new Node[255];    int tail=0;    int head=0;//队头指针与队尾指针    Node p=node;    int flag=1;    if(p!=null){    queue[tail++]=node;//将节点加入队列中    while(head!=tail){ //即队不空    Node temp=queue[head++];    if(temp.left!=null){    if (flag==0)    return false;    else{    queue[tail++]=temp.left;    }    }    else{    flag=0;    }    if(temp.right!=null){    if(flag==0){    return false;    }    else{    queue[tail++]=temp.right;    }    }    else{    flag=0;    }    }    }    return true;    }



0 0
原创粉丝点击