c++实现二叉搜索树

81 阅读1分钟

下面是一个简单的C++实现二叉搜索树的示例:

#include <iostream>

class TreeNode {
public:
    int key;
    TreeNode* left;
    TreeNode* right;

    TreeNode(int k) : key(k), left(nullptr), right(nullptr) {}
};

class BST {
private:
    TreeNode* root;

    // 插入辅助函数
    TreeNode* insertHelper(TreeNode* node, int key) {
        if (node == nullptr) {
            return new TreeNode(key);
        }
        if (key < node->key) {
            node->left = insertHelper(node->left, key);
        } else {
            node->right = insertHelper(node->right, key);
        }
        return node;
    }

    // 查找辅助函数
    bool searchHelper(TreeNode* node, int key) {
        if (node == nullptr) {
            return false;
        }
        if (key == node->key) {
            return true;
        }
        if (key < node->key) {
            return searchHelper(node->left, key);
        } else {
            return searchHelper(node->right, key);
        }
    }

public:
    BST() : root(nullptr) {}

    // 插入操作
    void insert(int key) {
        root = insertHelper(root, key);
    }

    // 查找操作
    bool search(int key) {
        return searchHelper(root, key);
    }
};

int main() {
    BST bst;

    // 插入一些元素
    bst.insert(5);
    bst.insert(3);
    bst.insert(7);

    // 查找元素
    std::cout << "Is 3 in the BST? " << std::boolalpha << bst.search(3) << std::endl;
    std::cout << "Is 6 in the BST? " << std::boolalpha << bst.search(6) << std::endl;

    return 0;
}

在这个示例中,TreeNode 类表示二叉搜索树中的节点,包含了一个关键字属性以及左右子节点的指针。BST 类表示二叉搜索树本身,包含了一个指向根节点的指针。insert() 方法用于插入一个元素到二叉搜索树中,search() 方法用于查找一个元素是否在二叉搜索树中。在插入操作中,通过递归的方式按照二叉搜索树的性质插入新的节点。