C++二叉搜索树核心实现与性能分析
一、二叉搜索树核心特性
二叉搜索树(BST)是一种高效的数据结构,满足:
- 有序性:任意节点 $N$ 满足 $左子树所有节点值 < N_{val} < 右子树所有节点值$
- 递归结构:左右子树均为二叉搜索树
二、C++实现框架
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
class BST {
private:
TreeNode* root;
// 递归插入辅助函数
TreeNode* _insert(TreeNode* node, int val) {
if (!node) return new TreeNode(val);
if (val < node->val) node->left = _insert(node->left, val);
else if (val > node->val) node->right = _insert(node->right, val);
return node;
}
// 递归查找辅助函数
TreeNode* _search(TreeNode* node, int val) {
if (!node || node->val == val) return node;
return (val < node->val) ? _search(node->left, val) : _search(node->right, val);
}
// 递归删除辅助函数
TreeNode* _delete(TreeNode* node, int val) {
if (!node) return nullptr;
(val < node->val) node->left = _delete(node->left, val);
(val > node->val) node->right = _delete(node->right, val);
{
(!node->left) node->right;
(!node->right) node->left;
TreeNode* minNode = _minValueNode(node->right);
node->val = minNode->val;
node->right = _delete(node->right, minNode->val);
}
node;
}
TreeNode* _minValueNode(TreeNode* node) {
(node && node->left) node = node->left;
node;
}
:
() : () {}
{ root = _insert(root, val); }
{ _search(root, val); }
{ root = _delete(root, val); }
};

