从标准输入中输入一组整数构造一棵二叉树(二叉查找树),有序输出该查找树中所有大于a且小于b的元素。 例如,若按照以下顺序输入一组整数:50、38、30、64、58、40、10、73、70、50、60、100、35,则生成下面的二叉树(二叉查找树): image.png 【输入形式】 先从标准输入读取整数的个数,然后第二行开始输入各个整数,整数之间以一个空格分隔。 第三行输入数据a、b,之间以一个空格分隔。用c++
时间: 2023-07-10 09:15:50 浏览: 107
好的,我理解了你的问题。下面是代码实现:
```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->right, val);
} else {
insert(root->left, val);
}
}
void find(TreeNode* root, int a, int b) {
if (root == NULL) {
return;
}
if (root->val <= a) {
find(root->right, a, b);
} else if (root->val >= b) {
find(root->left, a, b);
} else {
find(root->left, a, b);
cout << root->val << " ";
find(root->right, a, b);
}
}
int main() {
int n;
cin >> n;
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
int val;
cin >> val;
insert(root, val);
}
int a, b;
cin >> a >> b;
find(root, a, b);
cout << endl;
return 0;
}
```
解释一下代码的实现思路:
首先,我们定义了一个 `TreeNode` 结构体表示二叉树的节点,并且实现了一个 `insert` 函数用于将整数插入二叉查找树中。
然后,我们实现了一个 `find` 函数用于查找所有大于a且小于b的元素。这个函数中,我们采用了递归的方式来查找。如果当前节点的值小于等于a,那么我们在其右子树中查找;如果当前节点的值大于等于b,那么我们在其左子树中查找;否则,我们先在其左子树中查找,然后输出该节点的值,最后在其右子树中查找。这样,我们就可以利用二叉查找树的性质快速地找到所有符合条件的节点。
最后,在 `main` 函数中,我们先读入整数的个数,然后根据输入的整数构造二叉查找树。接着,我们读入a和b,并调用 `find` 函数查找所有符合条件的节点,并输出它们的值。
希望能够帮到你!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)