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

完全二叉树的定义:
①若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数
②第 h 层所有的结点都连续集中在最左边
输入、输出描述
输入:
给定一个二叉树的根节点
输出:
判断该二叉树是否为完全二叉树,若二叉树为空返回false
Example
输入:
二叉树如下:
      1
     / \
    2   3
   / \ / 
  4  5 6 
输出:
true
代码:
import java.util.*;

public class Main {

    /**
    //该段代码仅用于调试,提交时请注释该段代码
    class TreeNode<T> {

        public T data;

        public TreeNode<T> left;

        public TreeNode<T> right;
    }
 */ 

 public boolean solution(TreeNode<Integer> root) {
	if(root ==null){
		
		return false;
	}
	Queue<TreeNode<Integer>> q = new LinkedList<>();
	TreeNode<Integer>p=root;
	q.add(p);
   int flag = 1;
   while (q.isEmpty() == false)
	{
     p = q.poll();
     if(flag == 1){
       if(p.left != null && p.right != null){
       		q.add(p.left);
         q.add(p.right);
       
       }
       else if(p.left != null && p.right == null){
       		q.add(p.left);
         	flag = 0;
       }
       else if(p.left == null && p.right == null){
       		
         	flag = 0;
       }
       else if(p.left == null && p.right != null){
       		return false;
       }
     }
     else {
     	if(p.left != null || p.right != null){
       		return false;
       }
     
     }
    
   }


        return true;
    }
}
一个创业中的苦逼程序员
评论专区

隐藏