递归搜索树c++代码
时间: 2024-09-24 12:22:43 浏览: 28
c++递归函数基本代码.zip
在C++中,递归搜索树(如二叉搜索树)的遍历通常包括前序遍历、中序遍历和后序遍历。这里是一个简单的二叉搜索树的递归遍历示例,使用了节点结构:
```cpp
// 定义二叉搜索树节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 前序遍历(根-左-右)
void preOrder(TreeNode* root) {
if (root != NULL) {
cout << root->val << " "; // 访问当前节点
preOrder(root->left); // 递归左子树
preOrder(root->right); // 递归右子树
}
}
// 中序遍历(左-根-右)
void inOrder(TreeNode* root) {
if (root != NULL) {
inOrder(root->left);
cout << root->val << " "; // 访问当前节点
inOrder(root->right);
}
}
// 后序遍历(左-右-根)
void postOrder(TreeNode* root) {
if (root != NULL) {
postOrder(root->left);
postOrder(root->right);
cout << root->val << " "; // 访问当前节点
}
}
// 示例用法
int main() {
// 创建一个二叉搜索树
TreeNode* tree = new TreeNode(5);
tree->left = new TreeNode(3);
tree->right = new TreeNode(7);
tree->left->left = new TreeNode(2);
tree->left->right = new TreeNode(4);
tree->right->left = new TreeNode(6);
tree->right->right = new TreeNode(8);
cout << "Preorder traversal: ";
preOrder(tree);
cout << endl;
cout << "Inorder traversal: ";
inOrder(tree);
cout << endl;
cout << "Postorder traversal: ";
postOrder(tree);
cout << endl;
return 0;
}
```
阅读全文