zoukankan      html  css  js  c++  java
  • 判断是不是完全二叉树

    package com.hzins.suanfa;
    
    import java.util.LinkedList;
    import java.util.Queue;
    /**
     * 判断是不是完全二叉树
     * 层级遍历二叉树,当一个节点的右孩子是null,那么后面层级遍历的节点都是子节点
     * 
     * @author Administrator
     *
     */
    public class WanquanTree {
        public static boolean isCBT(Node head){
            if(head == null){
                return true;
            }
            Queue<Node> queue = new LinkedList<Node>();
            boolean leaf = false;
            Node cur = null;
            Node l = null;
            Node r = null;
            queue.offer(head);
            while(!queue.isEmpty()){
                cur = queue.poll();
                l = cur.left;
                r = cur.right;
                //或链接两个判断
                //1.leaf状态为零,但是左孩子和右孩子不全为null 2.有右孩子,没有左孩子
                //判定不是完全二叉树
                if((leaf && (l != null || r != null)) || (l == null && r != null)){
                    return false;
                }
                if(l != null){
                    queue.offer(l);
                }
                if(r != null){
                    queue.offer(r);
                }else{
                    //后面层级遍历的节点都是子节点
                    leaf = true;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    4.23计算机网络
    CF436F Banners
    CF1467C Three Bags
    LG P3247 [HNOI2016]最小公倍数
    LG P5473 [NOI2019] I 君的探险
    LG P3261 [JLOI2015]城池攻占
    LG P4149 [IOI2011]Race
    LG P3181 [HAOI2016]找相同字符
    SP7258 SUBLEX
    SP1811 LCS
  • 原文地址:https://www.cnblogs.com/caobojia/p/6767128.html
Copyright © 2011-2022 走看看