LetCode의 Binary Tree Preorder Traversal

1873 단어 LeetCode
원제:
Given a binary tree, return the preorder traversal of its nodes' values.
For example: Given binary tree  {1,#,2,3} ,
return  [1,2,3] .
두 갈래 나무의 순서는 반복됩니다. 귀환은 매우 간단합니다. 바로vector의 결과를 되돌려야 하기 때문에 호출을 시작할 때 하나의vector를 불러옵니다. 여기는 주소만 받습니다.
코드(20ms):
class Solution {
public:
    vector<int> preorderTraversal(TreeNode *root) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        
        vector<int> result;
        preTravle(root, result);
        return result;
    }
    
    void preTravle(TreeNode *root , vector<int>&result){
        if(root == NULL)  return;
        result.push_back(root->val);
        if(root->left) preTravle(root->left , result);
        if(root->right) preTravle(root->right , result);
        return;
    }
    
};

비귀속 방법: (24ms):
비귀속은 자연히 창고를 생각하게 된다. 먼저 순서가 뿌리-왼쪽-오른쪽이기 때문에 창고를 쌓을 때 먼저 창고 오른쪽 노드에 들어간 다음에 왼쪽 노드에 들어가는 것을 주의해야 한다.
class Solution {
public:
    vector<int> preorderTraversal(TreeNode *root) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        
        vector<int> result;
        if(!root) return result;
        stack<TreeNode*>s;
        s.push(root);
        //     ,  
        while(!s.empty()){
            TreeNode*current = s.top();
            s.pop();
            //         vector 
            result.push_back(current->val);
            //     
            if(current->right) s.push(current->right);
            if(current->left) s.push(current->left);
            
        }
        return result;
    }
   
    
};

좋은 웹페이지 즐겨찾기