编写一个程序exp2-2.cpp,实现二叉树的先序、中序和后序遍历的递归算法,并对图1所示的二叉树b给出求解结果。
时间: 2024-06-13 08:05:15 浏览: 102
实现先序,中序和后序遍历的二叉树遍历程序
5星 · 资源好评率100%
以下是exp2-2.cpp的代码实现,其中包括了二叉树的先序、中序和后序遍历的递归算法。您可以根据需要修改代码中的二叉树结构和节点数据类型。
```cpp
#include <iostream>
using namespace std;
// 二叉树结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 先序遍历
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left);
postorderTraversal(root->right);
cout << root->val << " ";
}
int main() {
// 构建二叉树
TreeNode* b = new TreeNode(1);
b->left = new TreeNode(2);
b->right = new TreeNode(3);
b->left->left = new TreeNode(4);
b->left->right = new TreeNode(5);
b->right->left = new TreeNode(6);
b->right->right = new TreeNode(7);
// 先序遍历
cout << "先序遍历结果:";
preorderTraversal(b);
cout << endl;
// 中序遍历
cout << "中序遍历结果:";
inorderTraversal(b);
cout << endl;
// 后序遍历
cout << "后序遍历结果:";
postorderTraversal(b);
cout << endl;
return 0;
}
```
对于图1所示的二叉树b,其先序遍历结果为1 2 4 5 3 6 7,中序遍历结果为4 2 5 1 6 3 7,后序遍历结果为4 5 2 6 7 3 1。
阅读全文