【数据结构与算法C++实现】0、对数器
发布人:shili8
发布时间:2025-01-21 05:17
阅读次数:0
**数据结构与算法 C++ 实现**
###1. 对数器####1.1 简介对数器是一种常见的数据结构,用于快速查找、插入或删除元素。它通常使用二叉树作为底层数据结构。
####1.2 实现
cpp#include <iostream> using namespace std; // 定义一个节点类struct Node { int data; Node* left; Node* right; }; // 对数器类class BinarySearchTree { private: Node* root; // 根节点public: // 构造函数 BinarySearchTree() : root(nullptr) {} // 销毁函数 ~BinarySearchTree() { destroyTree(root); } // 插入元素 void insert(int data) { root = insertNode(root, data); } // 查找元素 bool find(int data) { return findNode(root, data); } // 删除元素 void remove(int data) { root = removeNode(root, data); } private: // 插入节点函数 Node* insertNode(Node* node, int data) { if (node == nullptr) { node = new Node(); node->data = data; node->left = node->right = nullptr; } else if (data < node->data) { node->left = insertNode(node->left, data); } else if (data > node->data) { node->right = insertNode(node->right, data); } return node; } // 查找节点函数 bool findNode(Node* node, int data) { if (node == nullptr) { return false; } else if (data < node->data) { return findNode(node->left, data); } else if (data > node->data) { return findNode(node->right, data); } return true; } // 删除节点函数 Node* removeNode(Node* node, int data) { if (node == nullptr) { return nullptr; } else if (data < node->data) { node->left = removeNode(node->left, data); } else if (data > node->data) { node->right = removeNode(node->right, data); } else { // 删除节点 if (node->left == nullptr && node->right == nullptr) { delete node; return nullptr; } if (node->left == nullptr) { Node* temp = node->right; delete node; return temp; } if (node->right == nullptr) { Node* temp = node->left; delete node; return temp; } // 找到最小值 Node* minNode = findMin(node->right); node->data = minNode->data; node->right = removeNode(node->right, minNode->data); } return node; } // 销毁树函数 void destroyTree(Node* node) { if (node != nullptr) { destroyTree(node->left); destroyTree(node->right); delete node; } } // 找到最小值函数 Node* findMin(Node* node) { while (node->left != nullptr) { node = node->left; } return node; } };
####1.3 使用示例
cppint main() { BinarySearchTree bst; // 插入元素 bst.insert(5); bst.insert(3); bst.insert(7); bst.insert(2); bst.insert(4); bst.insert(6); bst.insert(8); // 查找元素 cout << "是否存在元素5: " << (bst.find(5) ? "是" : "否") << endl; cout << "是否存在元素9: " << (bst.find(9) ? "是" : "否") << endl; // 删除元素 bst.remove(3); cout << "是否存在元素3: " << (bst.find(3) ? "是" : "否") << endl; return0; }
###2. 总结本文介绍了对数器的基本概念和 C++ 实现。对数器是一种常见的数据结构,用于快速查找、插入或删除元素。它通常使用二叉树作为底层数据结构。在本文中,我们实现了一个对数器类,提供了 insert、find 和 remove 等方法来操作元素。我们还提供了示例代码来演示如何使用这个类。