コード例 #1
0
ファイル: TreeMultiset.java プロジェクト: EdwardLee03/guava
 private AvlNode<E> deleteMe() {
   int oldElemCount = this.elemCount;
   this.elemCount = 0;
   successor(pred, succ);
   if (left == null) {
     return right;
   } else if (right == null) {
     return left;
   } else if (left.height >= right.height) {
     AvlNode<E> newTop = pred;
     // newTop is the maximum node in my left subtree
     newTop.left = left.removeMax(newTop);
     newTop.right = right;
     newTop.distinctElements = distinctElements - 1;
     newTop.totalCount = totalCount - oldElemCount;
     return newTop.rebalance();
   } else {
     AvlNode<E> newTop = succ;
     newTop.right = right.removeMin(newTop);
     newTop.left = left;
     newTop.distinctElements = distinctElements - 1;
     newTop.totalCount = totalCount - oldElemCount;
     return newTop.rebalance();
   }
 }
コード例 #2
0
ファイル: TreeMultiset.java プロジェクト: EdwardLee03/guava
 private AvlNode<E> rotateRight() {
   checkState(left != null);
   AvlNode<E> newTop = left;
   this.left = newTop.right;
   newTop.right = this;
   newTop.totalCount = this.totalCount;
   newTop.distinctElements = this.distinctElements;
   this.recompute();
   newTop.recomputeHeight();
   return newTop;
 }