用C++编程实现二叉树的先序、中序和后序遍历。
时间: 2023-07-27 08:13:18 浏览: 99
二叉树的先序、中序、后序、分层遍历C++实现
4星 · 用户满意度95%
二叉树的遍历有三种方式:先序遍历、中序遍历和后序遍历。其中,先序遍历的顺序是根节点、左子树、右子树;中序遍历的顺序是左子树、根节点、右子树;后序遍历的顺序是左子树、右子树、根节点。
下面是用C++编程实现二叉树的先序、中序和后序遍历的示例代码:
```c++
#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* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 先序遍历
cout << "Preorder traversal: ";
preOrderTraversal(root);
cout << endl;
// 中序遍历
cout << "Inorder traversal: ";
inOrderTraversal(root);
cout << endl;
// 后序遍历
cout << "Postorder traversal: ";
postOrderTraversal(root);
cout << endl;
return 0;
}
```
运行结果如下:
```
Preorder traversal: 1 2 4 5 3
Inorder traversal: 4 2 5 1 3
Postorder traversal: 4 5 2 3 1
```
以上代码中,我们首先定义了二叉树的节点结构体 `TreeNode`,并在其中定义了节点的值、左子树和右子树。然后,我们分别实现了先序、中序和后序遍历的函数,这三个函数都是基于递归实现的。最后,我们在 `main` 函数中构造了一棵二叉树,并依次调用了先序、中序和后序遍历函数。
阅读全文