用c++写一下二叉排序树查找
时间: 2023-08-04 13:11:19 浏览: 80
用C++实现二叉树的查找功能
4星 · 用户满意度95%
二叉排序树也称二叉搜索树,是一种特殊的二叉树,它的左子树中所有节点的值都小于它的根节点的值,右子树中所有节点的值都大于它的根节点的值。以下是用C++实现的二叉排序树查找代码:
```c++
#include<iostream>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
class BST
{
public:
TreeNode* root;
BST() :root(NULL) {}
void insert(int val)
{
if (root == NULL)
{
root = new TreeNode(val);
}
else
{
TreeNode* p = root;
while (true)
{
if (val < p->val)
{
if (p->left == NULL)
{
p->left = new TreeNode(val);
break;
}
else
{
p = p->left;
}
}
else if (val > p->val)
{
if (p->right == NULL)
{
p->right = new TreeNode(val);
break;
}
else
{
p = p->right;
}
}
}
}
}
TreeNode* search(int val)
{
TreeNode* p = root;
while (p != NULL)
{
if (val == p->val)
{
return p;
}
else if (val < p->val)
{
p = p->left;
}
else
{
p = p->right;
}
}
return NULL;
}
};
int main()
{
BST tree;
tree.insert(6);
tree.insert(2);
tree.insert(8);
tree.insert(1);
tree.insert(4);
tree.insert(3);
TreeNode* node = tree.search(3);
if (node == NULL)
{
cout << "Not Found!" << endl;
}
else
{
cout << node->val << endl;
}
return 0;
}
```
上面的代码实现了二叉排序树的插入和查找操作,其中TreeNode结构体表示树的节点,BST类表示二叉排序树。在主函数中,首先创建了一个BST对象tree,并向其中插入了若干个节点。然后调用BST类的search方法查找值为3的节点,如果查找成功,则输出节点的值,否则输出"Not Found!"。
阅读全文