c++二叉树中序遍历输出
时间: 2024-10-24 15:14:14 浏览: 25
C++基于先序、中序遍历结果重建二叉树的方法
5星 · 资源好评率100%
在 C++ 中,二叉树的中序遍历是一种按照“左-根-右”顺序访问节点的方式。如果你有一个递归实现,可以这样做:
```cpp
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
// 首先遍历左子树
inorderTraversal(root->left);
// 然后访问根节点
std::cout << root->val << " ";
// 最后遍历右子树
inorderTraversal(root->right);
}
}
```
如果你想通过迭代的方式来完成中序遍历,你可以使用一个栈辅助:
```cpp
void inorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
TreeNode* curr = root;
while (curr || !s.empty()) {
// 如果当前节点不为空,将其入栈并继续处理其左子树
while (curr) {
s.push(curr);
curr = curr->left;
}
// 弹出栈顶元素并访问它,然后移动到右子树
curr = s.top();
s.pop();
cout << curr->val << " ";
curr = curr->right;
}
}
```
阅读全文