Gerard-Meier

Gerard

Feb 10th, 2011
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.24 KB | None | 0 0
  1. package BinaryTree;
  2. import java.util.ArrayDeque;
  3.  
  4. public final class BalancedNumbers {
  5.     private ArrayDeque<Integer> nums = new ArrayDeque<Integer>();
  6.     private ArrayDeque<Range>   todo = new ArrayDeque<Range>();
  7.  
  8.     public BalancedNumbers(int a, int b) {
  9.         todo.addLast(new Range(a, b));
  10.        
  11.         while(!todo.isEmpty()) {
  12.             calculate();
  13.         }
  14.     }
  15.  
  16.     public Integer[] getNums() {
  17.         Integer[] arr = new Integer[nums.size()];
  18.        
  19.         return nums.toArray(arr);
  20.     }
  21.  
  22.     public void calculate() {
  23.         Range range = todo.removeFirst();
  24.         if(range.a == range.b) return;
  25.  
  26.         double middle = range.a + ((range.b - range.a) * .5);
  27.  
  28.         if(Math.floor(middle) == 0) {
  29.             todo.clear();
  30.             return;
  31.         }
  32.         nums.addLast(((int)Math.floor(middle)));
  33.         Range range1 = new Range(range.a, (int)Math.floor(middle));
  34.         Range range2 = new Range((int)Math.ceil(middle), range.b);
  35.         todo.addLast(range1);
  36.         todo.addLast(range2);
  37.     }
  38. }
  39.  
  40. class Range {
  41.     public int a;
  42.     public int b;
  43.     public Range(int a, int b) {
  44.         this.a = a;
  45.         this.b = b;
  46.     }
  47.  
  48.     @Override
  49.     public String toString() {
  50.         return "a: " + a + ", b:" + b + " ";
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment