题解 | #判断是不是完全二叉树#

判断是不是完全二叉树

https://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae

Js版本

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @return bool布尔型
 */
function isCompleteTree(root) {
  // write code here
  if (root === null) return true;
  let arr = [];
  let flag = false;
  arr.push(root);
  while (arr.length !== 0) {//每一次while循环遍历一层
    let len = arr.length;
    for (let i = 0; i < len; ++i) {
      let cur = arr.shift();
      if (cur === null) flag = true;
      else {
        if (flag) return false;
        arr.push(cur.left);
        arr.push(cur.right);
      }
    }
  }
  return true;
}
module.exports = {
  isCompleteTree: isCompleteTree,
};

此题中的for循环可以省略,若省略则每一次while循环遍历一个节点,而不是一层节点,但仍是层序遍历

判断完全二叉树思路:按层序遍历,若遍历到了空节点后续存在非空节点,则一定不是完全二叉树,若遍历到空节点后续全为空节点,则为完全二叉树

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务