示例#1
0
 public function test_that_it_allows_value_replacement()
 {
     $monday = WeekDay::MONDAY();
     $node = new RedBlackNode($monday, 'Monday', 1, RedBlackNode::RED);
     $node->setValue('Sunday');
     $this->assertSame('Sunday', $node->value());
 }
示例#2
0
 /**
  * Inserts a key-value pair in a subtree
  *
  * @param mixed             $key   The key
  * @param mixed             $value The value
  * @param RedBlackNode|null $node  The subtree root
  *
  * @return RedBlackNode
  */
 protected function nodeSet($key, $value, RedBlackNode $node = null) : RedBlackNode
 {
     if ($node === null) {
         return new RedBlackNode($key, $value, 1, RedBlackNode::RED);
     }
     $comp = $this->comparator->compare($key, $node->key());
     if ($comp < 0) {
         $node->setLeft($this->nodeSet($key, $value, $node->left()));
     } elseif ($comp > 0) {
         $node->setRight($this->nodeSet($key, $value, $node->right()));
     } else {
         $node->setValue($value);
     }
     return $this->balanceOnInsert($node);
 }