题目描述:具体描述见原题。简单来说就是检验给定二叉树是否为完全二叉树。
集解题思路:根据完全二叉树性质可得(完全二叉树简介),若将完全二叉树存储在数组中,除最后一个节点为null外,中间不会出现null节点,根据此性质层次序遍历即可。具体过程见代码。
具体代码:
func isCompleteTree(root *TreeNode) bool {
queue, see := make([]*TreeNode, 0), false
queue = append(queue, root)
for len(queue) != 0 {
length := len(queue)
for i := 0; i < length; i++ {
if queue[i] == nil { // 在遍历当前层节点中,如果发现空节点,将标志变量置为true,跳过本次循环
see = true
continue
}
if see { // 在遍历当前层节点时,如果发现null节点后仍然有非null节点,则不为完全二叉树
return false
}
queue = append(queue, queue[i].Left, queue[i].Right) // 当前节点左右字节的点进队列
}
queue = queue[length:] // 更新为当前层下一层节点
}
return true
}
补充说明:中秋放假,可能咕咕咕两天,回家打游戏。