c++二叉树后序遍历的非递归算法。
时间: 2023-06-27 21:02:37 浏览: 102
二叉树的后序遍历非递归算法需要使用到栈,具体实现步骤如下:
1. 定义一个栈和一个指针cur,cur指向根节点。
2. 将cur指向的节点入栈,并将cur指向它的左子节点,重复此步骤,直到cur为nullptr。
3. 当cur为nullptr时,弹出栈顶节点,访问该节点,并将cur指向该节点的右子节点。
4. 重复步骤2和步骤3,直到栈为空。
下面是c++实现代码:
```cpp
void postorderTraversal(TreeNode* root) {
if (root == nullptr) return;
stack<TreeNode*> s;
TreeNode* cur = root;
TreeNode* lastVisited = nullptr;
while (cur != nullptr || !s.empty()) {
while (cur != nullptr) {
s.push(cur);
cur = cur->left;
}
cur = s.top();
if (cur->right == nullptr || cur->right == lastVisited) {
s.pop();
visit(cur);
lastVisited = cur;
cur = nullptr;
} else {
cur = cur->right;
}
}
}
```
其中,visit()函数用于访问节点。
阅读全文