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