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