用c++ 实现上述算法
时间: 2024-12-11 12:29:00 浏览: 6
在C++中实现二叉搜索树和前序遍历,你可以使用`struct`定义一个二叉树节点,并提供插入节点、查找节点以及前序遍历函数。下面是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
// 定义二叉搜索树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 插入节点函数
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root == NULL) return new TreeNode(val);
if (val < root->val) {
root->left = insertIntoBST(root->left, val);
} else {
root->right = insertIntoBST(root->right, val);
}
return root;
}
// 前序遍历函数
void preOrderTraversal(TreeNode* node) {
if (node != NULL) {
cout << node->val << " "; // 先访问根节点
preOrderTraversal(node->left); // 再遍历左子树
preOrderTraversal(node->right); // 最后遍历右子树
}
}
int main() {
TreeNode* root = NULL; // 初始为空
string input;
cin >> input; // 输入数字,假设它们是以空格分隔的
for (char c : input) {
if (isdigit(c)) { // 检查是否是数字字符
int val = c - '0'; // 转换为整数
root = insertIntoBST(root, val);
}
}
// 打印前序遍历结果
cout << "Preorder traversal: ";
preOrderTraversal(root);
cout << endl;
return 0;
}
```
在这个例子中,首先创建了一个空的根节点,然后逐个读取输入的数字,将其插入到BST中。最后,通过前序遍历打印出所有节点的值。
注意:此代码适用于数字字符直接输入的情况,如果输入的数字之间没有空格,你需要稍作修改以处理连续的数字输入。
阅读全文