标签:leetcode 二叉树 前序遍历 非递归 stack
problem:
thinking:
(1)前序遍历的递归法很easy,本题要求非递归,借助stack实现
(2)思路是:不为空时,优先将节点的左孩子入栈,入栈时即访问节点值,如果左孩子为空,取栈顶节点,访问其右孩子,再重复上述步奏。
code:
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> ret;
stack<TreeNode *> _stack;
TreeNode *node = root;
while(node!=NULL ||!_stack.empty())
{
if(node!=NULL)
{
ret.push_back(node->val);
_stack.push(node);
node=node->left;
}
else
{
node=_stack.top();
_stack.pop();
node=node->right;
}
}
return ret;
}
};leetcode || 144、Binary Tree Preorder Traversal
标签:leetcode 二叉树 前序遍历 非递归 stack
原文地址:http://blog.csdn.net/hustyangju/article/details/45499013