下面是一個實現二叉樹遍歷的PHP遞歸函數,包括前序遍歷、中序遍歷和后序遍歷:
class Node {
public $data;
public $leftChild;
public $rightChild;
public function __construct($data) {
$this->data = $data;
$this->leftChild = null;
$this->rightChild = null;
}
}
function preOrderTraversal($node) {
if ($node != null) {
echo $node->data . " ";
preOrderTraversal($node->leftChild);
preOrderTraversal($node->rightChild);
}
}
function inOrderTraversal($node) {
if ($node != null) {
inOrderTraversal($node->leftChild);
echo $node->data . " ";
inOrderTraversal($node->rightChild);
}
}
function postOrderTraversal($node) {
if ($node != null) {
postOrderTraversal($node->leftChild);
postOrderTraversal($node->rightChild);
echo $node->data . " ";
}
}
// 創建一個二叉樹
$root = new Node(1);
$root->leftChild = new Node(2);
$root->rightChild = new Node(3);
$root->leftChild->leftChild = new Node(4);
$root->leftChild->rightChild = new Node(5);
// 前序遍歷
echo "Preorder traversal: ";
preOrderTraversal($root);
echo "\n";
// 中序遍歷
echo "Inorder traversal: ";
inOrderTraversal($root);
echo "\n";
// 后序遍歷
echo "Postorder traversal: ";
postOrderTraversal($root);
echo "\n";
以上代碼演示了如何實現二叉樹的前序遍歷、中序遍歷和后序遍歷。您只需定義一個Node類來表示二叉樹節點,并編寫相應的遍歷函數即可。您可以根據需要自定義二叉樹的結構和節點數據。