更新時(shí)間:2023-03-06 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
Java中的二進(jìn)制搜索樹(Binary Search Tree,簡稱BST)是一種基于二分查找的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)都包含一個(gè)鍵值和對應(yīng)的值,同時(shí)滿足以下性質(zhì):
1.左子樹上所有節(jié)點(diǎn)的鍵值都小于它的根節(jié)點(diǎn)的鍵值。
2.右子樹上所有節(jié)點(diǎn)的鍵值都大于它的根節(jié)點(diǎn)的鍵值。
3.每個(gè)子樹都是BST。
以下是Java代碼實(shí)現(xiàn)二進(jìn)制搜索樹的基本操作(kotlin):
public class BinarySearchTree {
private Node root;
private class Node {
private int key;
private Node left, right;
public Node(int key) {
this.key = key;
}
}
public BinarySearchTree() {
root = null;
}
// 插入操作
public void insert(int key) {
root = insert(root, key);
}
private Node insert(Node x, int key) {
if (x == null) return new Node(key);
if (key < x.key) x.left = insert(x.left, key);
else if (key > x.key) x.right = insert(x.right, key);
return x;
}
// 查找操作
public boolean contains(int key) {
return contains(root, key);
}
private boolean contains(Node x, int key) {
if (x == null) return false;
if (key == x.key) return true;
else if (key < x.key) return contains(x.left, key);
else return contains(x.right, key);
}
// 刪除操作
public void delete(int key) {
root = delete(root, key);
}
private Node delete(Node x, int key) {
if (x == null) return null;
if (key < x.key) x.left = delete(x.left, key);
else if (key > x.key) x.right = delete(x.right, key);
else {
if (x.right == null) return x.left;
if (x.left == null) return x.right;
Node t = x;
x = min(t.right);
x.right = deleteMin(t.right);
x.left = t.left;
}
return x;
}
private Node deleteMin(Node x) {
if (x.left == null) return x.right;
x.left = deleteMin(x.left);
return x;
}
private Node min(Node x) {
if (x.left == null) return x;
return min(x.left);
}
}以上是基本的二進(jìn)制搜索樹操作,包括插入、查找、刪除等。需要注意的是,這里實(shí)現(xiàn)的二進(jìn)制搜索樹并不是平衡樹,因此在最壞情況下,樹的高度可能會達(dá)到 $N$,其中 $N$ 是樹中節(jié)點(diǎn)的數(shù)量,導(dǎo)致時(shí)間復(fù)雜度退化為 $O(N)$。為了解決這個(gè)問題,可以使用平衡二叉樹(如紅黑樹、AVL樹等)來代替二進(jìn)制搜索樹。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19