溫馨提示×

php二叉樹能實(shí)現(xiàn)排序嗎

PHP
小樊
81
2024-10-17 19:42:04
欄目: 編程語言

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

0