在计算机科学中,二叉搜索树(Binary Search Tree,简称BST)是一种非常重要的数据结构。它支持高效的查找、插入和删除操作。今天,我们将重点讲解如何在 C++ 中实现 BST 的插入操作,即使你是编程小白,也能轻松掌握!

二叉搜索树是一种特殊的二叉树,具有以下性质:
正是这种有序结构,使得 BST 在查找、插入等操作上平均时间复杂度为 O(log n)。
首先,我们需要定义 BST 的节点。每个节点包含三个部分:数据(value)、左子节点指针(left)和右子节点指针(right)。
struct TreeNode { int val; TreeNode* left; TreeNode* right; // 构造函数 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};插入操作的核心思想是:从根节点开始比较,若新值小于当前节点,则进入左子树;若大于,则进入右子树;直到找到空位置插入新节点。
以下是使用 递归 实现的插入函数:
TreeNode* insertIntoBST(TreeNode* root, int val) { // 基本情况:如果当前节点为空,说明找到了插入位置 if (root == nullptr) { return new TreeNode(val); } // 如果插入值小于当前节点值,递归插入左子树 if (val < root->val) { root->left = insertIntoBST(root->left, val); } // 如果插入值大于当前节点值,递归插入右子树 else if (val > root->val) { root->right = insertIntoBST(root->right, val); } // 返回根节点(保持树结构不变) return root;}除了递归,我们也可以用 循环(迭代)的方式实现插入,避免函数调用栈过深的问题。
TreeNode* insertIntoBSTIterative(TreeNode* root, int val) { // 如果树为空,直接创建新节点作为根 if (root == nullptr) { return new TreeNode(val); } TreeNode* current = root; while (true) { if (val < current->val) { if (current->left == nullptr) { current->left = new TreeNode(val); break; } current = current->left; } else if (val > current->val) { if (current->right == nullptr) { current->right = new TreeNode(val); break; } current = current->right; } else { // 如果值已存在,通常不插入重复值(根据需求可修改) break; } } return root;}下面是一个完整的 C++ 程序,演示如何使用上述插入函数构建一棵 BST:
#include <iostream>using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};TreeNode* insertIntoBST(TreeNode* root, int val) { if (root == nullptr) return new TreeNode(val); if (val < root->val) root->left = insertIntoBST(root->left, val); else if (val > root->val) root->right = insertIntoBST(root->right, val); return root;}// 中序遍历(用于验证 BST 是否正确)void inorder(TreeNode* root) { if (root == nullptr) return; inorder(root->left); cout << root->val << " "; inorder(root->right);}int main() { TreeNode* root = nullptr; int values[] = {50, 30, 70, 20, 40, 60, 80}; for (int v : values) { root = insertIntoBST(root, v); } cout << "中序遍历结果(应为升序): "; inorder(root); cout << endl; return 0;}运行结果:
中序遍历结果(应为升序): 20 30 40 50 60 70 80
通过本教程,你已经掌握了 C++ BST插入 的两种实现方式(递归与迭代),理解了 二叉搜索树实现 的核心逻辑。无论你是准备面试还是学习 C++数据结构教程,这些知识都非常实用。记住,熟练掌握 BST节点插入算法 是深入学习高级树结构的基础!
动手实践是掌握编程的关键,快去写代码试试吧!
本文由主机测评网于2025-12-05发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123145.html