| @@ 454-463 (lines=10) @@ | ||
| 451 | * @param Callable|null $callback the callback function to apply to each |
|
| 452 | * node. |
|
| 453 | */ |
|
| 454 | private function _preorder($node, Callable $callback = null) { |
|
| 455 | if($node === null) { |
|
| 456 | return; |
|
| 457 | } |
|
| 458 | if($callback !== null) { |
|
| 459 | call_user_func($callback, $node); |
|
| 460 | } |
|
| 461 | $this->_preorder($node->left, $callback); |
|
| 462 | $this->_preorder($node->right, $callback); |
|
| 463 | } |
|
| 464 | ||
| 465 | /** |
|
| 466 | * Traverse in inorder. This is: first visit the left subtree, |
|
| @@ 484-494 (lines=11) @@ | ||
| 481 | * @param Callable|null $callback the callback function to apply to each |
|
| 482 | * node. |
|
| 483 | */ |
|
| 484 | private function _inorder($node, Callable $callback = null) { |
|
| 485 | if($node === null) { |
|
| 486 | return; |
|
| 487 | } |
|
| 488 | ||
| 489 | $this->_inorder($node->left, $callback); |
|
| 490 | if($callback !== null) { |
|
| 491 | call_user_func($callback, $node); |
|
| 492 | } |
|
| 493 | $this->_inorder($node->right, $callback); |
|
| 494 | } |
|
| 495 | ||
| 496 | /** |
|
| 497 | * Traverse in postorder. This is: first visit the left subtree, |
|
| @@ 515-524 (lines=10) @@ | ||
| 512 | * @param Callable|null $callback the callback function to apply to each |
|
| 513 | * node. |
|
| 514 | */ |
|
| 515 | private function _postorder($node, Callable $callback = null) { |
|
| 516 | if($node === null) { |
|
| 517 | return; |
|
| 518 | } |
|
| 519 | $this->_postorder($node->left, $callback); |
|
| 520 | $this->_postorder($node->right, $callback); |
|
| 521 | if($callback !== null) { |
|
| 522 | call_user_func($callback, $node); |
|
| 523 | } |
|
| 524 | } |
|
| 525 | } |
|