一. 题目描述
题目链接: link
题目描述:
Given a binary tree, return the preorder traversal of its nodes' values.
Example:
Input: [1,null,2,3]
1
\
2
/
3
Output: [1,2,3]
Follow up: Recursive solution is trivial, could you do it iteratively?
二.思路
由题可知是前序遍历二叉树,运用递归的方法其实并不难,如何用迭代的方法来完成呢?
这时就会想到深度优先和广度优先的方法是可以借鉴一下的。于是我们将采用类似的方法,用栈的机制来实现!
三.代码
c++实现:
vector<int> preorderTraversal(TreeNode* root) {
if(!root)
{
return vector<int>();
}
vector<int> ans;
stack<TreeNode*> sk;
TreeNode* tmp;
sk.push(root);
while(!sk.empty())
{
tmp = sk.top();
ans.push_back(tmp->val);
sk.pop();
bool l = tmp->left;
bool r = tmp->right;
if(r)
{
sk.push(tmp->right);
}
if(l)
{
sk.push(tmp->left);
}
}
return ans;
}