栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

判断是否为完全二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

判断是否为完全二叉树

判断一棵树是否为完全二叉树

完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

思路:

我们采用队列来存储这颗完全二叉树。通过bfs存储队列时候会发现,一棵正确的完全二叉树再存入的过程中一定是每一个位置都存入了一个Node节点,直到最后一个存在的点存储结束,我们的队列里面会出现如下形式:

(节点,节点,节点....节点,null,null,null.....)

所以我们不断的存储节点,直到从队列中获取到的元素是null的时候停止存储。

之后我们将剩余的存储在队列中的null节点全部抛出,如果结束时队列为空,则表示存储的树一定是完全二叉树,否则不是!

解题模板:
class solution{
	public static boolean judge(TreeNode root){
        Queue  q=new linkedList<>();
        q.add(root);
        // 存储过程,存储时出现null节点则暂停存储!
        while(q.peek()!=null){
            TreeNode temp=q.poll();
            q.add(temp.left);
            q.add(temp.right);
        }
        
        while(!q.isEmpty()&&q.peek()==null){
            q.poll();//按照正常流程,队列中由于上面步骤,此时队列中只剩下null节点全部抛出则为完全二叉树!
            //如果出现了其他非null节点,则说面此树一定不是完全二叉树!
        }
        if(q.isEmpty()==true)return true;
        else return false;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716337.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号