/** * Rotates a right-learning link to the left * * Assumes $node->right is red. * * @param RedBlackNode $node The node * * @return RedBlackNode */ protected function rotateLeft(RedBlackNode $node) : RedBlackNode { $link = $node->right(); $node->setRight($link->left()); $link->setLeft($node); $link->setColor($node->color()); $node->setColor(RedBlackNode::RED); $link->setSize($node->size()); $node->setSize(1 + $this->nodeSize($node->left()) + $this->nodeSize($node->right())); return $link; }
public function test_that_clone_includes_linked_nodes() { $monday = WeekDay::MONDAY(); $node = new RedBlackNode($monday, 'Monday', 1, RedBlackNode::RED); $sunday = WeekDay::SUNDAY(); $left = new RedBlackNode($sunday, 'Sunday', 1, RedBlackNode::RED); $node->setLeft($left); $tuesday = WeekDay::TUESDAY(); $right = new RedBlackNode($tuesday, 'Tuesday', 1, RedBlackNode::RED); $node->setRight($right); $copy = clone $node; $node->setLeft(null); $node->setRight(null); $this->assertTrue($copy->left()->key()->equals($sunday)); }