给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点) 数据范围:节点数满足 样例图1: 样例图2: 样例图3:-笔试面试资料

这是qklbishe.com第18791 篇笔试面试资料
提供答案分析,通过本文《给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)

数据范围:节点数满足
样例图1: 样例图2: 样例图3:-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)
数据范围:节点数满足 给定一个二叉树,确定他是否是一个完全二叉树。          完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)            数据范围:节点数满足       样例图1:         样例图2:         样例图3:
样例图1:
给定一个二叉树,确定他是否是一个完全二叉树。          完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)            数据范围:节点数满足       样例图1:         样例图2:         样例图3:
样例图2:
给定一个二叉树,确定他是否是一个完全二叉树。          完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)            数据范围:节点数满足       样例图1:         样例图2:         样例图3:
样例图3:
给定一个二叉树,确定他是否是一个完全二叉树。          完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)            数据范围:节点数满足       样例图1:         样例图2:         样例图3:
Java

给定一个二叉树,确定他是否是一个完全二叉树。          完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)            数据范围:节点数满足       样例图1:         样例图2:         样例图3: 零葬

BFS求解,有两个判断准则:
  1. 如果遇到某个节点有右孩子没有左孩子,不是完全二叉树;
  2. 如果遇到某个节点的左右孩子不双全后,还遇到了非叶子节点,不是完全二叉树。

完整地层次遍历走下来还没装上上面两种情况,就是完全二叉树

import java.util.*;  /*  * public class TreeNode {  *   int val = 0;  *   TreeNode left = null;  *   TreeNode right = null;  *   public TreeNode(int val) {  *     this.val = val;  *   }  * }  */  public class Solution {     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param root TreeNode类       * @return bool布尔型      */     public boolean isCompleteTree (TreeNode root) {         // write code here         Queue<TreeNode> queue = new LinkedList<>();         queue.offer(root);         boolean flag = false;         while(!queue.isEmpty()){             TreeNode node = queue.poll();             // 有右孩子没有左孩子             if(node.right != null && node.left == null) return false;             // 遇到了左右孩子不双全的节点后,遇到了非叶子节点             if(flag && (node.left != null || node.right != null)) return false;             // 遇到左右孩子不双全的节点             if((node.left != null && node.right == null) || (node.left == null && node.right != null)) flag = true;             if(node.left != null) queue.offer(node.left);             if(node.right != null) queue.offer(node.right);         }         return true;     } }

今天 11:46:02 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点) 数据范围:节点数满足 样例图1: 样例图2: 样例图3:-笔试面试资料

提供最优质的资源集合

立即查看 了解详情