栈和队列:二叉树的前序遍历

二叉树的前序遍历

题目:用两种方式实现二叉树的前序遍历

方法1:递归

void preOrder(TreeNode *root)
{
    if(root == NULL)
        return;
    visit(root);
    preOrder(root->left);
    preOrder(root->right);
}

方法2:用栈实现前序遍历

vector preOrder(TreeNode *root)
{
    vector result;
    stack 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;
}

 

你可能感兴趣的:(算法,算法,栈,队列,二叉树前序遍历)