递归算法实现二叉树的先序、中序和后序遍历
时间: 2023-12-01 10:41:37 浏览: 97
二叉树三种遍历的非递归算法C语言
二叉树的遍历是指按照某种顺序依次访问二叉树中的所有节点。常见的遍历方式有先序遍历、中序遍历和后序遍历。递归是实现二叉树遍历的一种常见方法,下面分别介绍三种遍历方式的递归实现。
先序遍历:先访问根节点,再访问左子树,最后访问右子树。
```c++
void preOrder(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " "; // 访问根节点
preOrder(root->left); // 先序遍历左子树
preOrder(root->right); // 先序遍历右子树
}
```
中序遍历:先访问左子树,再访问根节点,最后访问右子树。
```c++
void inOrder(TreeNode* root) {
if (root == nullptr) return;
inOrder(root->left); // 中序遍历左子树
cout << root->val << " "; // 访问根节点
inOrder(root->right); // 中序遍历右子树
}
```
后序遍历:先访问左子树,再访问右子树,最后访问根节点。
```c++
void postOrder(TreeNode* root) {
if (root == nullptr) return;
postOrder(root->left); // 后序遍历左子树
postOrder(root->right); // 后序遍历右子树
cout << root->val << " "; // 访问根节点
}
```
其中,`TreeNode` 是二叉树节点的结构体,包含 `val`、`left` 和 `right` 三个成员变量,分别表示节点的值、左子节点和右子节点。
阅读全文