Пример #1
0
 private int treeDepth(IntegerTreeNode node) {
   if (node == null) {
     return 0;
   }
   int left = treeDepth(node.getLeft());
   int right = treeDepth(node.getRight());
   return left > right ? left + 1 : right + 1;
 }
Пример #2
0
 private boolean unbalanced(IntegerTreeNode node) {
   if (node == null) {
     return false;
   }
   int left = treeDepth(node.getLeft());
   int right = treeDepth(node.getRight());
   return (Math.abs(left - right) > 1);
 }
Пример #3
0
  private String toString(StringBuilder builder, IntegerTreeNode tree) {
    if (tree == null) {
      return builder.toString();
    }
    builder.append(toString(builder, tree.getLeft()));
    builder.append(toString(builder, tree.getRight()));

    return tree.toString();
  }
Пример #4
0
 private IntegerTreeNode rebalance(IntegerTreeNode tree) {
   if (tree == null) {
     return null;
   }
   tree.setLeft(rebalance(tree.getLeft()));
   tree.setRight(rebalance(tree.getRight()));
   if (unbalanced(tree)) {
     tree = rotate(tree);
   }
   return tree;
 }
Пример #5
0
 private boolean contains(int num, IntegerTreeNode tree) {
   if (tree == null) {
     return false;
   }
   if (tree.getValue() == num) {
     return true;
   }
   if (tree.getValue() < num) {
     return contains(num, tree.getRight());
   } else {
     return contains(num, tree.getLeft());
   }
 }
Пример #6
0
 private boolean containsVerbose(int num, IntegerTreeNode tree) {
   System.out.println(tree);
   if (tree == null) {
     return false;
   }
   if (tree.getValue() == num) {
     return true;
   }
   if (tree.getValue() < num) {
     return contains(num, tree.getRight());
   } else {
     return contains(num, tree.getLeft());
   }
 }
 public void add(int newNumber) {
   if (newNumber > this.value) {
     if (right == null) {
       right = new IntegerTreeNode(newNumber);
     } else {
       right.add(newNumber);
     }
   } else {
     if (left == null) {
       left = new IntegerTreeNode(newNumber);
     } else {
       left.add(newNumber);
     }
   }
 }
 public boolean contains(int n) {
   if (n == this.value) {
     return true;
   } else if (n > this.value) {
     if (right == null) {
       return false;
     } else {
       return right.contains(n);
     }
   } else {
     if (left == null) {
       return false;
     } else {
       return left.contains(n);
     }
   }
 }
  public void ToStringAll() {

    if ((this.left == null) && (this.right == null)) {
      String a = "L[] R[]";
      System.out.print(a);
    } else if ((this.left == null) && (this.right != null)) {
      String a = " L[]R[" + this.right.value + "] ";
      System.out.print(a);
      right.ToStringAll();
    } else if ((this.right == null) && (this.left != null)) {
      String a = " L[" + this.left.value + "R[]";
      System.out.print(a);
      left.ToStringAll();
    } else if ((this.right != null) && (this.left != null)) {
      String a = " L[" + this.left.value + "R[" + this.right.value + "] ";
      System.out.print(a);
      right.ToStringAll();
      left.ToStringAll();
    }
  }
Пример #10
0
 private void addNode(int num, IntegerTreeNode node) {
   if (node.getValue() > num) {
     if (node.getLeft() == null) {
       node.setLeft(new IntegerTreeNode(num));
     } else {
       addNode(num, node.getLeft());
     }
   } else {
     if (node.getRight() == null) {
       node.setRight(new IntegerTreeNode(num));
     } else {
       addNode(num, node.getRight());
     }
   }
 }
Пример #11
0
 public String toString() {
   return firstNode.setToString();
 }
Пример #12
0
 public boolean containsVerbose(int n) {
   return firstNode.containsVerbose(n);
 }
Пример #13
0
 public boolean contains(int n) {
   return firstNode.contains(n);
 }
Пример #14
0
 public void add(int n) {
   if (firstNode == null) firstNode = new IntegerTreeNode(n); // error: identifier expected
   else firstNode.add(n);
 }
 public int getMax() {
   if (right == null) {
     return this.value;
   } else return right.getMax();
 }
 public int getMin() {
   if (left == null) {
     return this.value;
   } else return left.getMin();
 }
Пример #17
0
 private IntegerTreeNode rotate(IntegerTreeNode tree) {
   if (tree == null) {
     return null;
   }
   IntegerTreeNode head = tree;
   if (treeDepth(tree.getLeft()) > treeDepth(tree.getRight())) {
     tree = tree.getLeft();
     head.setLeft(tree.getRight());
     tree.setRight(head);
   } else {
     tree = tree.getRight();
     head.setRight(tree.getLeft());
     tree.setLeft(head);
   }
   return tree;
 }