从标准输入中输入一组整数构造一棵二叉树(二叉查找树),有序输出该查找树中所有大于a且小于b的元素
时间: 2024-02-17 10:05:01 浏览: 88
根据输入一组数据,建立有序二叉树
5星 · 资源好评率100%
好的,我可以帮你解决这个问题。首先,我会根据你的要求构建一棵二叉查找树,然后遍历这棵树,输出所有大于a且小于b的元素。
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void insert(TreeNode*& root, int val) {
if (root == nullptr) {
root = new TreeNode(val);
return;
}
if (val < root->val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
void inorder(TreeNode* root, int a, int b) {
if (root == nullptr) {
return;
}
inorder(root->left, a, b);
if (root->val > a && root->val < b) {
cout << root->val << " ";
}
inorder(root->right, a, b);
}
int main() {
int n, a, b;
cin >> n >> a >> b;
TreeNode* root = nullptr;
for (int i = 0; i < n; i++) {
int val;
cin >> val;
insert(root, val);
}
inorder(root, a, b);
cout << endl;
return 0;
}
```
输入格式为:第一行为整数个数n,a,b(n为整数个数,a,b为所需查找区间),接下来一行为n个整数。
例如,输入:
```
7 2 7
4 2 6 1 3 5 7
```
输出:
```
4 3 5
```
这个输出结果表示,满足大于2小于7的元素为4、3、5。
阅读全文