package main
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return bool布尔型
*/
func isCompleteTree( root *TreeNode ) bool {
	if root == nil {
		return true
	}
	level := make([]*TreeNode, 0)
	level = append(level, root)
	//第一次遇到nil节点
	conNil := false
	for len(level) != 0 {
		size := len(level)
		tmp := make([]*TreeNode, 0)
		for i := 0; i < size; i++ {
			curr := level[0]
			level = level[1:]
			if curr == nil {
				conNil = true
				continue
			}
			if conNil {
				return false
			}
			tmp = append(tmp, curr.Left)
			tmp = append(tmp, curr.Right)
		}
		level = tmp
	}
	return true
}