中序遍历二叉树的非递归算法C++代码实现,并写出主函数
时间: 2024-02-04 13:39:46 浏览: 74
以下是中序遍历二叉树的非递归算法C++代码实现:
```c++
#include <iostream>
#include <stack>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void inorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
TreeNode* cur = root;
while (cur != NULL || !s.empty()) {
while (cur != NULL) {
s.push(cur);
cur = cur->left;
}
cur = s.top();
s.pop();
cout << cur->val << " ";
cur = cur->right;
}
}
int main() {
// 构造二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 中序遍历输出节点值
inorderTraversal(root);
return 0;
}
```
主函数中构造了一个二叉树,并调用 `inorderTraversal` 函数对其进行中序遍历,并输出每个节点的值。
阅读全文