示例#1
0
 /**
  * @param BinaryTree $node
  *
  * @return BinaryTree|null
  */
 protected function balance(BinaryTree $node = null)
 {
     if ($node === null) {
         return null;
     }
     $diff = $node->leftHeight() - $node->rightHeight();
     if ($diff < -1) {
         // right side is taller
         $node = $this->rotateLeft($node);
     } elseif ($diff > 1) {
         // left side is taller
         $node = $this->rotateRight($node);
     }
     return $node;
 }