判断二叉树是否是完全二叉树

image.png
    /**
     * 判断是否是完全二叉树
     * @param node
     */
    public static boolean isGoodBinaryTree(Node node){
        if (node == null)
            return false;
        Queue<Node> queue = new LinkedList<>();

        Node current = null;
        queue.offer(node);
        while(!queue.isEmpty()){
            //出队列元素
            current = queue.poll();

            if (current != null){
                if (current.left != null)
                    queue.offer(current.left);

                if (current.right != null)
                    queue.offer(current.right);

                //1.如果当前结点有右孩子,但是没有左孩子,直接返回false
                if (current.left == null && current.right !=null)
                    return false;

                //2.如果当前结点并不是左右孩子全有,那之后的节点必须都为叶节点,否则返回false
                if (current.left != null && current.right == null){
                    if (current.left.left != null || current.left.right != null)
                        return false;
                }
            }
        }
        //3.遍历过程如果不返回false,遍历结束后返回true即可
        return true;
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容