题目要求
给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)
思路分析
可以借助之前层序遍历的思路
再设置一个flag,当第一次遇到节点为空时 flag设置为true
当第二次遇到null时判断flag如果为true则直接返回
代码参考
const queue = []
if (!root) return true
queue.push(root)
let flag = false
while (queue.length) {
const node = queue.shift()
if (!node) flag = true // 如果node为null则flag为true
else {
if (queue.length && flag) return false
queue.push(node.left)
queue.push(node.right)
}
}
return true
标签:node,判断,return,是不是,queue,flag,二叉树,true
From: https://www.cnblogs.com/zx529/p/17038703.html