leetcode 958. Check Completeness of a Binary Tree(验证完全二叉树)
创始人
2025-05-28 13:25:01

在这里插入图片描述

验证一棵二叉树是否是完全二叉树,
完全二叉树是指,非叶子层的节点不能有null,也就是说节点个数满足2n-1,n为所在层数。
叶子层如果节点没填满,那么节点要靠左,不能出现左节点为null, 而右节点不为null的情况。

思路:

树的前序中序后序遍历只能看到一部分,而看不到整个一层是否缺节点。
因此需要层遍历,类似BFS。

是否缺节点可以验证第n层的节点个数是否为2n-1,但是在缺节点的情况下不能验证节点是不是靠左。

这样吧,把所有层的节点按层摊开,摊成一行,
由于完全二叉树的非叶子层必须是满的,叶子层节点又必须靠左,
最终摊开的节点必然会出现null节点在最后的情况,如果null出现在中间,则不是完全二叉树。
比如把上面example2的节点摊开:
1,2,3,4,5,null, 7
null出现在中间,不是完全二叉树。

一般BFS是不把null节点加进queue的,
但是这次要把null也加进queue, 这样如果出现null节点之后又出现了非null节点,证明节点不是靠左的,或者非叶子层有空节点。返回false。

    public boolean isCompleteTree(TreeNode root) {Queue queue = new LinkedList<>();queue.offer(root);boolean notFull = false;while(!queue.isEmpty()) {TreeNode cur = queue.poll();if(cur == null) notFull = true; //出现了null节点else {if(notFull) return false; //null节点之后出现了非null节点queue.offer(cur.left);queue.offer(cur.right);}}return true;}

相关内容

热门资讯

没有一个川渝人能拒绝这道酸辣开... 在川渝人家的餐桌上,如果说有一道菜能瞬间唤醒沉睡的味蕾,那绝对非泡椒滑肉莫属。对于无辣不欢的川渝人来...
原创 夏... 夏季这菜正上市,和它们是绝配,常吃由内到外都滋润,很多人不懂! 进入夏季,正是西红柿大量上市的季节...
小份酸菜鱼的鱼片怎么做才能久泡... 小份酸菜鱼的鱼片怎么做才能久泡不散 很多人在家做酸菜鱼时都遇到过这样的困扰:鱼片刚下锅时又嫩又滑,可...
5月27日早安:周三不是“过路... 今天是2026年5月27日,星期三。 早上好。 一周行至中点,很多人容易泄气:周一的冲劲用完,周五...
江西休闲零食业态市场空间如何 随着国内休闲零食消费持续升级,下沉市场的消费活力逐步释放,中部省份的零食业态发展受到不少创业者的关注...