二叉搜索树(Binary Search Tree)
二叉搜索树是一种特殊的二叉树,它的每个节点的键都大于其左子树中的任意节点的键,而小于右子树的任意节点的键。
下面是一个二叉搜索树的示例:
二叉搜索树初始化
创建树节点的静态内部类,初始化根节点root
BSTreeNode root;
static class BSTreeNode {
int key;
Object value;
BSTreeNode left;
BSTreeNode right;
public BSTreeNode(int key) {
this.key = key;
}
public BSTreeNode(int key, Object value) {
this.key = key;
this.value = value;
}
public BSTreeNode(int key, Object value, BSTreeNode left, BSTreeNode right) {
this.key = key;
this.value = value;
this.left = left;
this.right = right;
}
}
二叉搜索树的操作
二叉搜索树支持多种操作,包括插入、查找、删除等。以下是这些操作的Java实现。
插入操作(put)
插入操作是将一个新的键值对插入到二叉搜索树中。如果树中已经存在相同的键,那么新的值将替换旧的值。
public boolean put(int key, Object value) {
BSTreeNode node = root;
BSTreeNode parent = null;
// 通过循环找到要插入的位置
while (node != null) {
parent = node;
if (key > node.key)
node = node.right;
else if (key < node.key)
node = node.left;
else {
// 如果找到了相同的键,就更新值
node.value = value;
return true;
}
}
// 创建新的节点
BSTreeNode bsTreeNode = new BSTreeNode(key, value);
// 如果树为空,就让新节点成为根节点
if (parent == null) {
root = bsTreeNode;
} else if (key > parent.key) {
parent.right = bsTreeNode;
} else {
parent.left = bsTreeNode;
}
return true;
}
查找操作(get)
查找操作是根据键在二叉搜索树中查找对应的值。
public