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 |