LeetCode每日一题 (47)144. 二叉树的前序遍历

144. 二叉树的前序遍历


在这里插入图片描述


非递归:

class Solution {
    
    
public:
    vector<int> preorderTraversal(TreeNode* root) {
    
    
        vector<int> result;
        TreeNode *p=root;
        stack<TreeNode*> S;
        while(p!=nullptr || !S.empty()){
    
    
            if(p!=nullptr){
    
    
                result.push_back(p->val);
                S.push(p);
                p=p->left;
            }
            else{
    
    
                p=S.top();
                S.pop();
                p=p->right;
            }
        }
        return result;
    }
};

在这里插入图片描述


递归:

class Solution {
    
    
public:
    vector<int> preorderTraversal(TreeNode* root) {
    
    
        vector<int> result;
        if(root==nullptr) return result;
        result.push_back(root->val);
        vector<int> temp;
        temp=preorderTraversal(root->left);
        result.insert(result.end(),temp.begin(),temp.end());
        temp=preorderTraversal(root->right);
        result.insert(result.end(),temp.begin(),temp.end());
        return result;
    }
};

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_45021180/article/details/109308467