实现二叉树的先序 中序和后序遍历c++
时间: 2025-01-01 22:40:58 浏览: 14
在C++中,可以使用递归的方式来实现二叉树的先序(Preorder)、中序(Inorder)和后序(Postorder)遍历。下面是每个遍历方法的基本步骤:
1. 先序遍历 (Preorder):
- 访问根节点 (root)
- 递归遍历左子树 (visit left subtree)
- 递归遍历右子树 (visit right subtree)
```cpp
void preorderTraversal(TreeNode* root) {
if (root != nullptr) {
cout << root->val << " "; // 访问根节点
preorderTraversal(root->left); // 遍历左子树
preorderTraversal(root->right); // 遍历右子树
}
}
```
2. 中序遍历 (Inorder):
- 递归遍历左子树 (visit left subtree)
- 访问根节点 (root)
- 递归遍历右子树 (visit right subtree)
```cpp
void inorderTraversal(TreeNode* root) {
if (root != nullptr) {
inorderTraversal(root->left); // 遍历左子树
cout << root->val << " "; // 访问根节点
inorderTraversal(root->right); // 遍历右子树
}
}
```
3. 后序遍历 (Postorder):
- 递归遍历左子树 (visit left subtree)
- 递归遍历右子树 (visit right subtree)
- 访问根节点 (root)
```cpp
void postorderTraversal(TreeNode* root) {
if (root != nullptr) {
postorderTraversal(root->left); // 遍历左子树
postorderTraversal(root->right); // 遍历右子树
cout << root->val << " "; // 访问根节点
}
}
```
在这里,`TreeNode*`是一个指向二叉树结点的指针类型,`val`代表当前节点的值。
阅读全文