Advertisement
1988coder

958. Check Completeness of a Binary Tree

Dec 22nd, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.88 KB | None | 0 0
  1. /**
  2.  * Definition for a binary tree node.
  3.  * public class TreeNode {
  4.  *     int val;
  5.  *     TreeNode left;
  6.  *     TreeNode right;
  7.  *     TreeNode(int x) { val = x; }
  8.  * }
  9.  */
  10. // Refer : https://leetcode.com/problems/check-completeness-of-a-binary-tree/discuss/205682/JavaC++Python-BFS-Level-Order-Traversal
  11. /*
  12. Time Complexity: O(N)
  13. Space Complexity: O(N)
  14.  
  15. N = Number of nodes;
  16. */
  17. class Solution {
  18.     public boolean isCompleteTree(TreeNode root) {
  19.         if (root == null) {
  20.             return true;
  21.         }
  22.        
  23.         Queue<TreeNode> queue = new LinkedList();
  24.         queue.offer(root);
  25.        
  26.         while (queue.peek() != null) {
  27.             TreeNode node = queue.poll();
  28.             queue.offer(node.left);
  29.             queue.offer(node.right);
  30.         }
  31.        
  32.         while (!queue.isEmpty() && queue.peek() == null) {
  33.             queue.poll();
  34.         }
  35.        
  36.         return queue.isEmpty();
  37.     }
  38. }
  39.  
  40.  
  41. /*
  42. Time Complexity: O(N)
  43. Space Complexity: O(N)
  44.  
  45. N = Number of nodes;
  46. */
  47. class Solution {
  48.     public boolean isCompleteTree(TreeNode root) {
  49.         if (root == null) {
  50.             return true;
  51.         }
  52.        
  53.         Queue<TreeNode> queue = new LinkedList();
  54.         queue.offer(root);
  55.        
  56.         while (true) {
  57.             TreeNode node = queue.poll();
  58.             if (node.left == null) {
  59.                 if (node.right != null) {
  60.                     return false;
  61.                 }
  62.                 break;
  63.             }
  64.             queue.offer(node.left);
  65.             if (node.right == null) {
  66.                 break;
  67.             }
  68.             queue.offer(node.right);
  69.         }
  70.        
  71.         while (!queue.isEmpty()) {
  72.             TreeNode node = queue.poll();
  73.             if (node.left != null || node.right != null) {
  74.                 return false;
  75.             }
  76.         }
  77.        
  78.         return true;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement