首页 > 试题广场 >

判断是不是完全二叉树

[编程题]判断是不是完全二叉树
  • 热度指数:64418 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个二叉树,确定他是否是一个完全二叉树。

完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)

数据范围:节点数满足
样例图1:
样例图2:
样例图3:

示例1

输入

{1,2,3,4,5,6}

输出

true
示例2

输入

{1,2,3,4,5,6,7}

输出

true
示例3

输入

{1,2,3,4,5,#,6}

输出

false

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 牛客题解官
发表于 2022-04-22 12:03:13
精华题解 题目主要信息: 判断给定二叉树是否为完全二叉树 首先我们需要知道什么是完全二叉树:叶子节点只能出现在最下层和次下层,且最下层的叶子节点集中在树的左部。 需要注意的是,满二叉树肯定是完全二叉树,而完全二叉树不一定是满二叉树。 举一反三: 学习完本题的思路你可以解决如下题目: BM26. 求二叉树的 展开全文
头像 Jplusztx
发表于 2022-03-02 14:29:36
基本思路就是,将每层的节点以层序遍历的方式全部放入队列中(包括null) 如果是完全二叉树,在我们取出节点的时候,应该是直到整棵树遍历完毕才会遇到null。 所以当我们按层序遍历的方式,遇到null,但是队列中仍然存在节点,则代表不是完全二叉树;否则,是完全二叉树。 /* * function T 展开全文
头像 代码界的小白
发表于 2022-03-14 14:07:51
题目主要信息 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点) 方法一:层次遍历 具体方法 使用层次遍历,每 展开全文
头像 youxiwang
发表于 2022-01-23 12:41:40
跟这题一样的 https://blog.nowcoder.net/n/4012546b98ae4356ab926184ed323c58 import java.util.*; public class Solution { public boolean isCompleteTree (T 展开全文
头像 牛客768685351号
发表于 2022-03-09 14:47:07
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) { 展开全文
头像 总之就是非常可爱
发表于 2022-03-15 16:19:49
/**  * struct TreeNode {  *    int val;  *    struct TreeNode *left;  *   & 展开全文
头像 加油做题
发表于 2022-05-26 22:16:19
整体思路: 如果树为空,直接返回0。 如果树不是空,则层序遍历树: 如果当前节点左孩子空,右孩子不空,返回0; 如果当前节点左右都不是空,那么入队左右孩子,出队头结点; 如果当前结点左孩子不空且右孩子空,或,左右孩子都空,则队列中当前结点之后的所有结点都是叶子节点时,树为完全二叉树:检查之后的 展开全文
头像 讲道理的豹子说这不是bug
发表于 2023-07-22 19:37:44
方法:BFS,辅助队列本质是广度优先搜索,利用辅助队列进行层序遍历。如果一个二叉树是完全二叉树,那么层序遍历时,第一个空结点也是它的最后一个空结点;否则就不是完全二叉树。时间复杂度:o(n)。最坏情况需要遍历二叉树的所有结点。空间复杂度:o(n)。需要辅助队列进行二叉树的层序遍历 class Sol 展开全文
头像 菜鸡孙连城
发表于 2022-03-19 20:57:54
思路:借助层序遍历 只有x,x,x,#,#,#这样的才是完全二叉树 如果出现x,#,y,#,#,#或者x,#,#,x,#,#,#证明不是完全二叉树 碰到第一个#的时侯令flag=true 如果再次碰到非#结点,且flag=true时候,说明不是完全二叉树 function isCompleteTre 展开全文
头像 Program120
发表于 2022-05-09 21:35:23
思路简单,全在注释中 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public Tre 展开全文
头像 big_dreamer
发表于 2022-05-19 23:01:34
package main import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已 展开全文