Advertisement
rishu110067

Untitled

Feb 1st, 2022
1,167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.44 KB | None | 0 0
  1.  
  2.     /*
  3.     For your reference:
  4.     class BinaryTreeNode {
  5.         Integer value;
  6.         BinaryTreeNode left;
  7.         BinaryTreeNode right;
  8.  
  9.         BinaryTreeNode(Integer value) {
  10.             this.value = value;
  11.             this.left = null;
  12.             this.right = null;
  13.         }
  14.     }
  15.     */
  16.    
  17.     private static int count = 0;
  18.    
  19.     static Integer find_single_value_trees(BinaryTreeNode root) {
  20.         if (root == null) {
  21.             return 0;
  22.         }
  23.         isUnival(root);
  24.         return count;
  25.     }
  26.    
  27.     // return true is the subtree starting from note is unival
  28.     static boolean isUnival(BinaryTreeNode node) {
  29.        
  30.         if (node.left == null && node.right == null) {
  31.             count++;
  32.             return true;
  33.         }
  34.        
  35.         boolean unival = true;
  36.         if (node.left != null) {
  37.             if (!isUnival(node.left)) { // make sure this is called if node.left is not null
  38.                 unival = false;
  39.             }
  40.             if (!node.value.equals(node.left.value)) {
  41.                 unival = false;
  42.             }
  43.         }
  44.        
  45.         if (node.right != null) {
  46.             if (!isUnival(node.right)) {
  47.                 unival = false;
  48.             }
  49.             if (!node.value.equals(node.right.value)) {
  50.                 unival = false;
  51.             }
  52.         }
  53.         if (unival) {
  54.             count++;
  55.         }
  56.        
  57.         return unival;
  58.     }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement