I am reading a PHP Data Structures book and in Binary Search Trees in Trees Chapter I meet the following… further below… By calling:
$tree->traverse($tree->root, 'pre-order');
subsequently called the
public function preOrder(Node $node) {
if ($node) {
echo $node->data . " ";
if ($node->left) $this->traverse($node->left);
if ($node->right) $this->traverse($node->right);
}
}
by what logic/thinking (or why) $this->traverse($node->left);
// Do Not appear as
$this->traverse($node->left, "pre-order"); // in recursive calling
???? Code works here full code >>> <a class="attachment" href="/community/uploads/default/original/3X/2/d/2d8a6f61c5c954c4055663498aea9e8a93ad7459.php">6.php</a> (4.3 KB)
class BST {
public $root = NULL;
.................................................
public function traverse(Node $node, string $type="in-order") {
switch($type) {
case "in-order":
$this->inOrder($node);
break;
case "pre-order":
$this->preOrder($node);
break;
case "post-order":
$this->postOrder($node);
break;
}
}
public function preOrder(Node $node) {
if ($node) {
echo $node->data . " ";
if ($node->left) $this->traverse($node->left);
if ($node->right) $this->traverse($node->right);
}
}
public function inOrder(Node $node) {
if ($node) {
if ($node->left) $this->traverse($node->left);
echo $node->data . " ";
if ($node->right) $this->traverse($node->right);
}
}
public function postOrder(Node $node) {
if ($node) {
if ($node->left) $this->traverse($node->left);
if ($node->right) $this->traverse($node->right);
echo $node->data . " ";
}
}
}
try {
$tree = new BST(10);
$tree->insert(12);
$tree->insert(6);
$tree->insert(3);
$tree->insert(8);
$tree->insert(15);
$tree->insert(13);
$tree->insert(36);
$tree->traverse($tree->root, 'pre-order');
echo "\n";
$tree->traverse($tree->root, 'in-order');
echo "\n";
$tree->traverse($tree->root, 'post-order');
} catch (Exception $e) {
echo $e->getMessage();
}