본문 바로가기

Algorithm/기타(기업등)

[SAP/C++] Mirror Tree

728x90

Mirror Tree

문제내용은 말 그대로 입력받은 트리를 반전시키는 것 

 

생각)

일단 트리를 맨 아래까지 탐색해서 NULL이 나오면 리턴 해준 후 오른쪽과 왼쪽을 바꿔주면 될 것 같다

근데, 맨 아래까지 탐색하는 것을 DFS에 너무 생각이 한정되어 있다보니 

어떻게 해야할지 여러가지 시도를 해봤는데.. 생각해보니 재귀로 하면 엄청 간단하게 가능하다 ㅠㅠ 

연습이 많이 부족한걸 느낌...

/* A binary tree node has data, pointer to left child
   and a pointer to right child /
struct Node
{
    int data;
    struct Node* left;
    struct Node* right;
    
    Node(int x){
        data = x;
        left = right = NULL;
    }
}; */



class Solution{
    public:
    //Function to convert a binary tree into its mirror tree.
    void mirror(Node* node)
    {
        

        if(node ==NULL) return; //탐색시 NULL일땐 리턴 
        else{
        	//재귀 방식으로 그래프의 가장 깊은 곳 까지 탐색 
            mirror(node->left);
            mirror(node->right);
            
            //둘의 위치를 바꿈
            Node* temp = node->right;
            node->right = node->left;
            node->left = temp;
        }
    
    }
    
    
    
};

 

 

728x90

'Algorithm > 기타(기업등)' 카테고리의 다른 글

[CodingBat/Java] missingChar  (0) 2021.09.24
[SAP/C++] BST from postorder  (0) 2021.04.24
[SAP/C++] reversed Linked List  (0) 2021.04.24
[SAP/C++]Check Circular Linked List  (0) 2021.04.22
[SAP/C++] Remove Space  (0) 2021.04.21