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

    /**
       * 完全二叉树:要么是满二叉树,要么是在满二叉树的基础上,最后一层的节点是从左到右是依次添加的
       * 采用按层遍历的方式判断是不是完全二叉树
     */
    public class IsCompleteTree {
    
        public static void main(String[] args) {
            Node head = new Node(1);
            head.left = new Node(2);
            head.right = new Node(3);
            head.left.left = new Node(4);
            head.left.right = new Node(5);
            head.right.right = new Node(6);
            System.out.println(isCompleteTree(head));
        }
    
        public static boolean isCompleteTree(Node head) {
            if (head == null) {
                return true;
            }
            LinkedList<Node> queue = new LinkedList<Node>();
            queue.offer(head);
            Node left = null;
            Node right = null;
            boolean leaf = false;
            while (!queue.isEmpty()) {
                Node node = queue.poll();
                left = node.left;
                right = node.right;
                // 左节点为空,右节点不为空
                if (left == null && right != null) {
                    return false;
                }
                // 当检查叶子节点状态开启时,但是又不是叶子节点时
                if (leaf && (left != null || right != null)) {
                    return false;
                }
                // 开启检查叶子节点状态
                if ((left == null && right == null) || (left != null && right == null)) {
                    leaf = true;
                }
                if (left != null) {
                    queue.offer(left);
                }
                if (right != null) {
                    queue.offer(right);
                }
            }
            return true;
        }
    
        public static class Node {
            Node left;
            Node right;
            int value;
    
            public Node(int value) {
                super();
                this.value = value;
            }
        }
    }
  • 相关阅读:
    原码、反码、补码详解
    进制转换
    目录
    Window【目录】
    排序算法——冒泡排序
    算法的时间复杂度与空间复杂度
    排序算法
    递归—八皇后问题
    递归—迷宫问题
    递归
  • 原文地址:https://www.cnblogs.com/moris5013/p/11681194.html
Copyright © 2011-2022 走看看