一、题目介绍
给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
二、解题思路
迭代算法很简单,这里采用迭代算法。迭代算法使用栈来实现。
三、解题代码
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> vec;
if(root == NULL)
return vec;
stack<TreeNode*> st;
TreeNode* pTemp = root;
while(pTemp || !st.empty())
{
while(pTemp) //先沿着左子树遍历至叶子节点
{
st.push(pTemp);
vec.push_back(pTemp->val);
pTemp = pTemp->left;
}
pTemp = st.top()->right; //没有左子树之后遍历右子树
st.pop();
}
return vec;
}
};
四、解题结果