用c++实现二叉树的三种非递归遍历
时间: 2024-09-24 17:31:07 浏览: 29
在C++中,二叉树的三种常见的非递归遍历包括前序遍历、中序遍历和后序遍历。这里分别介绍它们的实现:
1. **前序遍历**(Preorder Traversal):
```cpp
void preorderTraversal(TreeNode* root) {
if (root != nullptr) {
// 访问根节点
cout << root->val << " ";
// 遍历左子树
preorderTraversal(root->left);
// 遍历右子树
preorderTraversal(root->right);
}
}
```
2. **中序遍历**(Inorder Traversal):
```cpp
void inorderTraversal(TreeNode* root) {
if (root != nullptr) {
// 遍历左子树
inorderTraversal(root->left);
// 访问根节点
cout << root->val << " ";
// 遍历右子树
inorderTraversal(root->right);
}
}
```
3. **后序遍历**(Postorder Traversal):
```cpp
void postorderTraversal(TreeNode* root) {
if (root != nullptr) {
// 遍历左子树
postorderTraversal(root->left);
// 遍历右子树
postorderTraversal(root->right);
// 访问根节点
cout << root->val << " ";
}
}
```
以上三种遍历都是从上到下逐层访问每个节点,区别在于访问根节点的时间点不同。