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;