以二叉链表作存储结构,试用C++编写前序、中序、后序遍历二叉树的算法
时间: 2024-11-12 22:32:06 浏览: 47
以二叉链表作为二叉树的存储结构,我们可以分别用递归和迭代的方式来实现三种基本的遍历:前序(根-左-右)、中序(左-根-右)和后序(左-右-根)。这里我们先给出递归版本的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 << " "; // 访问根节点
}
}
```
对于非递归的迭代版本,可以使用栈来辅助,但由于二叉树的性质,中序遍历的实现相对复杂一些。如果你想了解迭代版的代码,我可以继续提供。
阅读全文