二叉排序查找算法的实现c++
时间: 2023-08-17 08:05:23 浏览: 111
C++实现的二叉排序树
二叉排序树(Binary Search Tree),又称二叉查找树、有序二叉树(Ordered Binary Tree),排序二叉树(Sorted Binary Tree),是指一棵空树或者具有下列性质的二叉树:
1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
3. 任意节点的左、右子树也分别为二叉排序树;
4. 没有键值相等的节点。
以下是二叉排序树的 C++ 实现:
```cpp
#include<iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void insert(TreeNode* &root, int val) {
if (root == NULL) {
root = new TreeNode(val);
return;
}
if (val < root->val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
bool search(TreeNode* root, int val) {
if (root == NULL) {
return false;
}
if (root->val == val) {
return true;
} else if (root->val > val) {
return search(root->left, val);
} else {
return search(root->right, val);
}
}
int main() {
TreeNode* root = NULL;
int arr[] = {5, 2, 7, 1, 3, 6, 8};
for (int i = 0; i < 7; i++) {
insert(root, arr[i]);
}
cout << search(root, 3) << endl; //output: 1
cout << search(root, 4) << endl; //output: 0
return 0;
}
```
以上代码中 `insert` 函数用于在二叉排序树中插入节点,`search` 函数用于在二叉排序树中查找节点。
阅读全文