/** * @param BinaryTree $node * @return BinaryTree */ private function deleteNeitherChildIsNull(BinaryTree $node) { $value = $node->inOrderPredecessor()->value(); $node->setLeft($this->removeRecursive($value, $node->left())); $node->setValue($value); return $node; }
function testGetInOrderPredecessorWithLeftNodeHavingRightSubTree() { $root = new BinaryTree(5); $left = new BinaryTree(2); $root->setLeft($left); $root->setRight(new BinaryTree(6)); $inOrderPredecessor = new BinaryTree(3); $left->setRight($inOrderPredecessor); $this->assertEquals($inOrderPredecessor, $root->inOrderPredecessor()); }