티스토리 뷰

#include<iostream>
#include<queue>

using namespace std;

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};

class Solution {
private:
    queue<TreeNode*> q;
public:
    void run(TreeNode* root) {
		
        //DFS
        preOrder(root);
        cout << endl;
        inOrder(root);
        cout << endl;
        postOrder(root);
        cout << endl;

        //BFS
        bfs(root);
    }

    
    //전위탐색
    void preOrder(TreeNode* root) {
        cout << root->val << "\n";
        if (root->left != NULL) {
            preOrder(root->left); 
        }
        if (root->right != NULL) {
            preOrder(root->right);
        }
    }
    //중위탐색
    void inOrder(TreeNode* root) {
        if (root->left != NULL) {
            preOrder(root->left); 
        }
        cout << root->val << "\n";
        if (root->right != NULL) {
            preOrder(root->right);
        }
    }
    //후위탐색
    void postOrder(TreeNode* root) {
        if (root->left != NULL) {
            preOrder(root->left);
        }
        if (root->right != NULL) {
            preOrder(root->right);
        }
        cout << root->val << "\n";
    }

    //깊이우선탐색
    void bfs(TreeNode* root) {
        TreeNode* tmp;
        int startPnt = 0;

        tmp = root;
        q.push(tmp);

        while (!q.empty()) {
            tmp = q.front();
            int front = q.front()->val;
            q.pop();
            cout << front << "\n";
            if (tmp->left != nullptr) {
                q.push(tmp->left);
            }
            if (tmp->right != nullptr){
                q.push(tmp->right);
            }
        }
        delete tmp;
    }
};
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함