判断二叉树是否为满二叉树

满二叉树的定义:
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。
输入、输出描述
输入:
给定一个二叉树的根节点
输出:
判断该二叉树是否为满二叉树,若二叉树为空返回false
Example
输入:
二叉树如下:
      1
     / \
    2   3
   / \ / \
  4  5 6  7
输出:
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 true;
	}
	Queue<TreeNode<Integer>> q = new LinkedList<>();
	TreeNode<Integer>p=root;
	q.add(p);
   int num = 1;
   while (q.isEmpty() == false)
	{
     int sz = q.size();
     if(sz != num){
     	return false;
     }
     while(sz != 0){
     	p = q.poll();
       if (p.left != null)
		  {
			q.add(p.left);
		  }
		  if (p.right != null)
		  {
			q.add(p.right);
		  }
     	sz--;
     }
     num *= 2;
   }


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

隐藏