从标准输入中输入一组整数构造一棵二叉查找树,有序输出该查找树中所有大于a且小于b的元素。c++代码
时间: 2024-02-20 07:01:28 浏览: 108
二叉搜索树用C++编写的一个程序
5星 · 资源好评率100%
好的,这里是实现该功能的C++代码:
```c++
#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);
}
}
// 中序遍历二叉查找树,输出大于a且小于b的元素
void inorder(TreeNode* root, int a, int b) {
if (root == NULL) {
return;
}
if (root->val > a) {
inorder(root->left, a, b);
}
if (root->val > a && root->val < b) {
cout << root->val << " ";
}
if (root->val < b) {
inorder(root->right, a, b);
}
}
int main() {
TreeNode* root = NULL;
int n, a, b;
cin >> n >> a >> b;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
insert(root, num);
}
inorder(root, a, b);
return 0;
}
```
跟之前的代码类似,我们定义了一个`TreeNode`结构体表示二叉树节点,包括节点值、左子树和右子树。然后我们实现了一个`insert`函数用于将一个数插入到二叉查找树中。最后我们定义了一个`inorder`函数用于中序遍历二叉查找树,输出大于a且小于b的元素。
在`main`函数中,我们先读入整数个数n和a、b的值,接着读入n个整数,将它们插入到二叉查找树中。最后调用`inorder`函数输出结果。
希望这份代码能够帮到你!
阅读全文