PHP中的二叉樹可以實(shí)現(xiàn)排序。您可以創(chuàng)建一個(gè)自定義的二叉搜索樹(BST),它允許您快速插入、刪除和查找節(jié)點(diǎn)。在插入或刪除節(jié)點(diǎn)時(shí),樹會(huì)自動(dòng)重新排列以保持排序順序。
以下是一個(gè)簡單的PHP二叉搜索樹實(shí)現(xiàn),包括插入和遍歷功能:
class Node {
public $value;
public $left;
public $right;
public function __construct($value) {
$this->value = $value;
$this->left = null;
$this->right = null;
}
}
class BinarySearchTree {
public $root;
public function __construct() {
$this->root = null;
}
public function insert($value) {
$node = new Node($value);
if ($this->root === null) {
$this->root = $node;
} else {
$this->insertNode($this->root, $node);
}
}
private function insertNode($node, $newNode) {
if ($newNode->value < $node->value) {
if ($node->left === null) {
$node->left = $newNode;
} else {
$this->insertNode($node->left, $newNode);
}
} else {
if ($node->right === null) {
$node->right = $newNode;
} else {
$this->insertNode($node->right, $newNode);
}
}
}
public function inOrderTraversal($node = null) {
if ($node === null) {
$node = $this->root;
}
if ($node !== null) {
$this->inOrderTraversal($node->left);
echo $node->value . " ";
$this->inOrderTraversal($node->right);
}
}
}
$bst = new BinarySearchTree();
$values = [8, 3, 10, 1, 6, 14, 4, 7, 13];
foreach ($values as $value) {
$bst->insert($value);
}
echo "In-order traversal of the BST: ";
$bst->inOrderTraversal();
在這個(gè)例子中,我們創(chuàng)建了一個(gè)簡單的二叉搜索樹,并向其中插入了一些值。然后,我們使用中序遍歷(左-根-右)打印出排序后的值。這將輸出:In-order traversal of the BST: 1 3 4 6 7 8 10 13 14
。