<?php
Class TreeNode {
public function __construct(
public $value = 0,
public ?TreeNode $left = null,
public ?TreeNode $right = null
) {
}
}
<?php
function preorder (TreeNode $node) {
// 最後一個節點
if ($node == null) return;
// 從根節點,向左讀取,直到左邊沒有東西後,才向右讀取
echo $node->value;
inorder($node->left);
inorder($node->right);
}
<?php
function inorder (TreeNode $node) {
// 最後一個節點
if ($node == null) return;
// 從左邊最下面開始讀取,接著向上讀取一層後,再向右讀取
inorder($node->left);
echo $node->value;
inorder($node->right);
}
<?php
function postorder (TreeNode $node) {
// 最後一個節點
if ($node == null) return;
// 從左邊最下面開始讀取左右數,接著才向上讀取一層
inorder($node->left);
inorder($node->right);
echo $node->value;
}