判断是否是完全二叉树

给你一颗二叉树,判断是否是完全二叉树?

思路:BFS+ 层序遍历。二叉树的每一个节点,如果其子节点为空,则视为空。若为完全二叉树,则最后的空都在最后;若非完全二叉树,则在空之后还会有其他

元素,实现的时候借助于判断队列是否为空,循环取出元素,判断该元素是否为null即可。

 

bug卡在了java的队列接口,入队列是add, 出队列是poll .而不是 push和pop。

 

核心代码:

 1     public  static boolean isCompleteTree(TreeNode root) {
 2         if(root==null){
 3             return false;
 4         }
 5 
 6         Queue<TreeNode> queue = new LinkedList<TreeNode>();
 7         ((LinkedList<TreeNode>) queue).push(root);
 8 
 9         TreeNode cur;
10 
11         while ( ( cur = ((LinkedList<TreeNode>) queue).poll()) != null){
12             ((LinkedList<TreeNode>) queue).add(cur.left);
13             ((LinkedList<TreeNode>) queue).add(cur.right);
14         }
15 
16 
17         while (!queue.isEmpty()){
18             cur = ((LinkedList<TreeNode>) queue).poll();
19             if(cur!=null){
20                 return false;
21             }
22         }
23 
24         return true;
25     }

 

    原文作者:vector11248
    原文地址: https://www.cnblogs.com/vector11248/p/10126070.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞