写出先序中序后序遍历二叉树具体完整代码
时间: 2024-06-03 18:06:11 浏览: 117
树与二叉树的转换
好的,以下是二叉树的先序、中序、后序遍历的完整代码示例:
```
#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;
}
```
阅读全文