zoukankan      html  css  js  c++  java
  • Check If Binary Tree Is Completed

    Check if a given binary tree is completed. A complete binary tree is one in which every level of the binary tree is completely filled except possibly the last level. Furthermore, all nodes are as far left as possible.

    Examples

            5

          /    

        3        8

      /  

    1      4

    is completed.

            5

          /    

        3        8

      /          

    1      4        11

    is not completed.

    Corner Cases

    • What if the binary tree is null? Return true in this case.

    How is the binary tree represented?

    We use the level order traversal sequence with a special symbol "#" denoting the null node.

    For Example:

    The sequence [1, 2, 3, #, #, 4] represents the following binary tree:

        1

      /  

     2     3

          /

        4

    /**
     * public class TreeNode {
     *   public int key;
     *   public TreeNode left;
     *   public TreeNode right;
     *   public TreeNode(int key) {
     *     this.key = key;
     *   }
     * }
     */
    public class Solution {
      public boolean isCompleted(TreeNode root) {
        // Write your solution here
        if (root==null){
          return true;
        }
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        q.offer(root);
        
        int isLeaf = 0;
        while(!q.isEmpty()){
          Queue<TreeNode> nextQ = new LinkedList<TreeNode>();
          int size = q.size();
          for(int i=0; i<size; i++){
            TreeNode curNode = q.poll();
            if(curNode.left==null && curNode.right!=null){
              return false;
            }
            if(curNode.left!=null){
              if(isLeaf==1){
                return false;
              }
              nextQ.offer(curNode.left);
            }
            if(curNode.right!=null){
              if(isLeaf==1){
                return false;
              }
              nextQ.offer(curNode.right);
            }
            if(curNode.left==null || curNode.right==null){
              isLeaf=1;
            }
          }
          q = nextQ;
        }
        return true;
    
      }
    }
  • 相关阅读:
    完整的网站开发技术学习建议
    在微信小程序中绘制图表(part2)
    原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
    第八届蓝桥杯第二题:等差素数列
    第七届蓝桥杯第四题:快速排序
    51Nod:1086背包问题 V2
    POJ:2386 Lake Counting(dfs)
    51Nod:1268 和为K的组合
    迭代器
    51Nod:1134 最长递增子序列
  • 原文地址:https://www.cnblogs.com/zg1005/p/12142993.html
Copyright © 2011-2022 走看看