二叉树中序遍历非递归
时间: 2023-11-26 11:46:17 浏览: 265
二叉树非递归中序遍历
二叉树中序遍历非递归算法可以使用栈来实现。具体实现方法如下:
1. 定义一个栈和一个指向根节点的指针。
2. 将根节点和它的所有左子树全部入栈。
3. 当栈不为空时,取出栈顶元素,将其值存入结果数组中。
4. 如果该节点有右子树,则将右子树及其所有左子树全部入栈。
5. 重复步骤3和4,直到栈为空。
代码实现如下(C++):
```
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> st;
TreeNode* p = root;
while (p != NULL || !st.empty()) {
while (p != NULL) {
st.push(p);
p = p->left;
}
p = st.top();
st.pop();
res.push_back(p->val);
p = p->right; }
return res;
}
```
阅读全文