LeetCode 두 갈래 트리 반복 반복 실현(전순, 중순, 후순)

2512 단어 LeetCode

앞차례 를 두루 다니다


https://leetcode-cn.com/problems/binary-tree-preorder-traversal/description/
1. 루트 노드에 먼저 액세스
2. 왼쪽 트리 다시 방문하기
3. 마지막으로 오른쪽 트리를 방문한다
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector preorderTraversal(TreeNode* root) {
        vector ret;
        inorderTraversal(root, ret);   
        return ret;   
    }
private:
    void preorderTraversal(TreeNode* pNode, vector& ret){
        if(pNode){
            ret.push_back(pNode->val);
            inoderTraversal(pNode->left, ret);
            inoderTraversal(pNode->right, ret);
        }    
    }
};

중서 역행


https://leetcode-cn.com/problems/binary-tree-inorder-traversal/description/
1. 왼쪽 트리 먼저 방문하기
2. 루트 노드 재방문
3. 마지막으로 오른쪽 트리를 방문한다
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector inorderTraversal(TreeNode* root) {
        vector ret;
        inorderTraversal(root, ret);
        return ret;
    }
private:
    void inorderTraversal(TreeNode* pNode, vector& ret){
        if(pNode){
            inorderTraversal(pNode->left, ret);
            ret.push_back(pNode->val);
            inorderTraversal(pNode->right, ret);
        }
    }
};

뒤돌아 다니다


https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/
1. 먼저 왼쪽 나무를 훑어보다
2. 다시 우자나무를 훑어보다
3. 마지막으로 루트 노드를 반복
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector postorderTraversal(TreeNode* root) {
        vector ret;
        postoderTraversal(root, ret);
        return ret;
    }
private:
    void postorderTraversal(TreeNode* pNode, vector& ret){
        if(pNode){
            postoderTraversal(pNode->left, ret);
            postoderTraversal(pNode->right,ret);
            ret.push_back(pNode->val);
        }
    }
};

좋은 웹페이지 즐겨찾기