Beispiel #1
0
 /**
  *@param IBTreeNode $bnode
  *@return bool
  */
 public function equalsTo($bnode)
 {
     if (strcmp(trim($this->getKey()), trim($bnode->getKey())) == 0) {
         return true;
     } else {
         return false;
     }
 }
Beispiel #2
0
 /** Insert a value into a non-full (and non-null) B-tree node.
  *@param  IBTreeNode $value
  *@param  BTree $BTree
  *@return BTree
  */
 private static function insertNonFull($value, $btree)
 {
     $i = 0;
     while ($i < $btree->_n && $value->greaterThan($btree->_keys[$i])) {
         $i++;
     }
     if (@$btree->_children[$i] == null) {
         // Leaf node
         $btree->shiftUp($i, $value);
         $btree->_children[$i + 1] = null;
     } elseif ($btree->_children[$i]->full()) {
         // Full child
         $pivot = $btree->_children[$i]->_keys[self::T - 1];
         $btree->shiftUp($i, $pivot);
         $btree->_children[$i + 1] = $btree->_children[$i]->split();
         self::insertNonFull($value, $btree->_children[$value->greaterThan($pivot) ? $i + 1 : $i]);
     } else {
         // Non-full child
         self::insertNonFull($value, $btree->_children[$i]);
     }
 }