二叉树的前序遍历
题目:用两种方式实现二叉树的前序遍历
方法1:递归
void preOrder(TreeNode *root)
{
if(root == NULL)
return;
visit(root);
preOrder(root->left);
preOrder(root->right);
}
方法2:用栈实现前序遍历
vector<int> preOrder(TreeNode *root)
{
vector<int> result;
stack<TreeNode*> helper;
if(root == NULL) return result;
while(root || !helper.empty())
{
if(root)
{
result.push(root->val);
helper.push(root);
root = root->left;
}else{
root = helper.top();
helper.pop();
root = root->right;
}
}
return result;
}