Пример #1
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;
 }
Пример #2
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;
 }
Пример #3
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());
     }
   }
 }