Code Top -- 13 二叉树前序遍历迭代法

维护一个先右后左栈

Posted by OUC_LiuX on April 19, 2022

from CodeTop, Leetcode, 144. 二叉树的前序遍历
不要用递归,要用迭代实现。

解读:
维护一个栈,根节点先入栈,当栈非空:
top() 节点值加入数组,当前节点的子节点先右后左入栈。这是由于元素出栈的时候按照先入后出规则,左节点后入栈,下一轮出栈的时候左节点在前。

代码:

if (!root) return {};
vector<int> ans;
stack<TreeNode*> st;
st.push(root);
while(st.size()){
    TreeNode* node = st.top();
    st.pop();
    ans.push_back(node -> val);
    if (node -> right)  st.push(node -> right);
    if (node -> left)   st.push(node -> left);
}
return ans;