实验题目:以二叉链表作为二叉树的存储结构,设计一个算法,实现以下功能: 输出二叉树的先序遍历序列、中序遍历序列、后序遍历序列。c++代码实现(注释)
时间: 2025-01-22 18:16:35 浏览: 37
当然,我可以帮你理解如何设计这样的算法并提供C++代码实现。首先,我们需要定义一个二叉链表节点(Binary Node),然后构建二叉树数据结构,并实现三个遍历函数:先序(Preorder)、中序(Inorder)和后序(Postorder)。以下是详细的步骤和代码:
```cpp
#include <iostream>
// 定义二叉链表节点
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 先序遍历(根-左-右)
void preorderTraversal(TreeNode* root) {
if (root != nullptr) { // 如果节点存在
std::cout << root->val << " "; // 访问当前节点
preorderTraversal(root->left); // 递归遍历左子树
preorderTraversal(root->right); // 递归遍历右子树
}
}
// 中序遍历(左-根-右)
void inorderTraversal(TreeNode* root) {
if (root != nullptr) {
inorderTraversal(root->left); // 递归遍历左子树
std::cout << root->val << " "; // 访问当前节点
inorderTraversal(root->right); // 递归遍历右子树
}
}
// 后序遍历(左-右-根)
void postorderTraversal(TreeNode* root) {
if (root != nullptr) {
postorderTraversal(root->left); // 递归遍历左子树
postorderTraversal(root->right); // 递归遍历右子树
std::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);
// 调用遍历函数
std::cout << "Preorder traversal: ";
preorderTraversal(root);
std::cout << "\n";
std::cout << "Inorder traversal: ";
inorderTraversal(root);
std::cout << "\n";
std::cout << "Postorder traversal: ";
postorderTraversal(root);
std::cout << "\n";
return 0;
}
```
在这个例子中,我们首先创建了一个简单的二叉树,然后分别调用`preorderTraversal`、`inorderTraversal`和`postorderTraversal`函数来获取相应的遍历序列。
阅读全文
相关推荐


















