1. 介绍
排序二叉树,也被称为二叉搜索树,是一种具有特定排序顺序的二叉树结构。它的特点是每个节点都有一个键值,且左子节点的键值小于等于父节点的键值,右子节点的键值大于等于父节点的键值。排序二叉树可以快速进行插入、删除和查找操作,因此在很多应用中被广泛使用。
2. 构造排序二叉树
2.1 插入节点
在构造排序二叉树时,需要按照特定的规则插入节点。插入节点的基本步骤如下:
如果树为空,将待插入节点作为根节点。
如果待插入节点的键值小于当前节点的键值,将节点插入到当前节点的左子树中。
如果待插入节点的键值大于等于当前节点的键值,将节点插入到当前节点的右子树中。
下面是插入节点的 PHP 实现:
class Node {
public $key;
public $left;
public $right;
public function __construct($key) {
$this->key = $key;
$this->left = null;
$this->right = null;
}
}
class BinarySearchTree {
public $root;
public function __construct() {
$this->root = null;
}
public function insert($key) {
$node = new Node($key);
if ($this->root === null) {
$this->root = $node;
} else {
$current = $this->root;
while (true) {
if ($key < $current->key) {
if ($current->left === null) {
$current->left = $node;
break;
} else {
$current = $current->left;
}
} else {
if ($current->right === null) {
$current->right = $node;
break;
} else {
$current = $current->right;
}
}
}
}
}
}
在上述代码中,我们定义了一个 Node 类来表示二叉树的节点,包括键值以及左右子节点的引用。然后继续定义了一个 BinarySearchTree 类来实现排序二叉树的基本功能。在插入节点的方法中,我们根据节点的键值与当前节点的比较结果,递归地找到插入位置。
2.2 构建示例树
我们可以使用以下代码来构建一个示例的排序二叉树:
$bst = new BinarySearchTree();
$bst->insert(8);
$bst->insert(3);
$bst->insert(10);
$bst->insert(1);
$bst->insert(6);
$bst->insert(14);
$bst->insert(4);
$bst->insert(7);
$bst->insert(13);
以上代码构建了一个具有 9 个节点的排序二叉树。树的结构如下:
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
通过以上示例,我们可以看到排序二叉树的插入过程。在插入节点时,根据节点的键值与当前节点的比较结果,递归地找到合适的插入位置。