二叉树先序、中序、后序遍历算法
时间: 2023-07-10 19:37:08 浏览: 112
二叉树的遍历有三种方式:先序遍历、中序遍历和后序遍历。
先序遍历:先遍历根节点,然后遍历左子树,最后遍历右子树。
中序遍历:先遍历左子树,然后遍历根节点,最后遍历右子树。
后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。
对于一个二叉树的遍历,可以采用递归的方式或者非递归的方式实现。
下面是三种遍历方式的递归实现代码:
先序遍历:
```
void preOrderTraversal(TreeNode* root) {
if(root == nullptr) return;
cout << root->val << " "; //访问节点
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
```
中序遍历:
```
void inOrderTraversal(TreeNode* root) {
if(root == nullptr) return;
inOrderTraversal(root->left);
cout << root->val << " "; //访问节点
inOrderTraversal(root->right);
}
```
后序遍历:
```
void postOrderTraversal(TreeNode* root) {
if(root == nullptr) return;
postOrderTraversal(root->left);
postOrderTraversal(root->right);
cout << root->val << " "; //访问节点
}
```
其中,TreeNode 表示二叉树的节点结构体,val 表示节点的值。
阅读全文