LeetCode--Binary Tree Preorder Traversal

来源:互联网 发布:java 编写操作系统 编辑:程序博客网 时间:2024/05/23 00:03

Binary Tree Preorder Traversal

 Total Accepted: 18022 Total Submissions: 51784My Submissions

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1    \     2    /   3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?


 法一,递归

class Solution {public:    void preOrder(TreeNode* root,vector<int>& vectorStorage)    {        if(root!=NULL)        {            vectorStorage.push_back(root->val);            preOrder(root->left,vectorStorage);            preOrder(root->right,vectorStorage);        }    }    vector<int> preorderTraversal(TreeNode *root)    {        vector<int> vectorTemp;        preOrder(root,vectorTemp);        return vectorTemp;    }};

法二,迭代

vector<int> preorderTraversal(TreeNode *root)    {        vector<int> vectorTemp;        //preOrder(root,vectorTemp);        //return vectorTemp;        if(root==NULL)return vectorTemp;        stack<TreeNode*>S;        TreeNode* p;        S.push(root);        while(!S.empty())        {            p=S.top();            S.pop();            vectorTemp.push_back(p->val);            if(p->right!=NULL)S.push(p->right);            if(p->left!=NULL)S.push(p->left);        }        return vectorTemp;    }



0 0
原创粉丝点击