Example #1
0
 /**
  * @return array
  */
 public function preOrder()
 {
     /*current + left + right */
     /**
      * @var BinaryTreeNode $root
     */
     $root = $this->getRoot();
     $listArray = [];
     array_push($listArray, $root->getData());
     if (!$this->isEmpty()) {
         $left = $root->getLeft();
         if ($left) {
             $leftTree = new self($left);
             $listArray = array_merge($listArray, $leftTree->preOrder());
         }
         $right = $root->getRight();
         if ($right) {
             $rightTree = new self($right);
             $listArray = array_merge($listArray, $rightTree->preOrder());
         }
     }
     return $listArray;
 }