使用 PHP 建立進階搜尋樹涉及建立節點類別 (Node) 和搜尋樹類別 (SearchTree),以及實作插入、尋找和刪除元素的方法。這些元素以對數時間複雜度儲存在一個二元樹中,每個節點包含一個值以及指向其左子樹和右子樹的連結。在實戰中,可以建立一個搜尋樹並插入元素,尋找特定值,甚至從樹中刪除元素。
使用PHP 建立高階搜尋樹資料結構
#搜尋樹是一種高效的資料結構,它允許在對數時間複雜度內尋找、插入和刪除元素。本文將指導你使用 PHP 建立一個進階搜尋樹。
1. 建立節點類別
首先,建立一個名為Node
的類別來表示樹中的節點:
class Node { public $value; public $left; public $right; public function __construct($value) { $this->value = $value; $this->left = null; $this->right = null; } }
2. 建立搜尋樹類別
接下來,建立一個名為SearchTree
的類別來表示搜尋樹本身:
class SearchTree { private $root; public function __construct() { $this->root = null; } // 其他方法(见下文) }
3. 插入元素
要插入一個新元素,可以使用下列方法:
public function insert($value) { if ($this->root === null) { $this->root = new Node($value); } else { $this->_insert($value, $this->root); } } private function _insert($value, $node) { if ($value < $node->value) { if ($node->left === null) { $node->left = new Node($value); } else { $this->_insert($value, $node->left); } } else { if ($node->right === null) { $node->right = new Node($value); } else { $this->_insert($value, $node->right); } } }
4. 尋找元素
要尋找一個元素,可以使用以下方法:
public function find($value) { if ($this->root === null) { return null; } else { return $this->_find($value, $this->root); } } private function _find($value, $node) { if ($value === $node->value) { return $node; } elseif ($value < $node->value) { if ($node->left === null) { return null; } else { return $this->_find($value, $node->left); } } else { if ($node->right === null) { return null; } else { return $this->_find($value, $node->right); } } }
5. 刪除元素
要刪除一個元素,可以使用以下方法(這是一個遞歸的過程,具體實作略):
public function delete($value) { if ($this->root === null) { return; } else { $this->root = $this->_delete($value, $this->root); } } private function _delete($value, $node) { // ... }
實戰案例
讓我們建立一個搜尋樹並插入一些元素:
$tree = new SearchTree(); $tree->insert(10); $tree->insert(5); $tree->insert(15); $tree->insert(7); $tree->insert(12); $tree->insert(20);
然後,我們可以尋找一個元素:
$foundNode = $tree->find(12); if ($foundNode !== null) { echo "Found the node with value 12." . PHP_EOL; }
最後,我們可以刪除一個元素:
$tree->delete(12);
以上是用 PHP 建立先進的搜尋樹資料結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!