Skip to content

Commit be6bba7

Browse files
authored
Merge pull request #1555 from crumbs22/main
2 parents 2eb5ee5 + f690f0a commit be6bba7

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

invert-binary-tree/crumbs22.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* invertTree(TreeNode* root) {
15+
// 종료 조건
16+
if (!root)
17+
return (nullptr);
18+
19+
// 노드 반전 (중위순회)
20+
TreeNode* tmp = root->left;
21+
root->left = root->right;
22+
root->right = tmp;
23+
24+
// 재귀적 호출
25+
invertTree(root->left);
26+
invertTree(root->right);
27+
return (root);
28+
}
29+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
public:
3+
int search(vector<int>& nums, int target) {
4+
int left = 0;
5+
int right = nums.size() - 1;
6+
while(left <= right) {
7+
int mid = left + (right - left) / 2;
8+
9+
if (nums[mid] == target)
10+
return (mid);
11+
12+
// 왼쪽 구간이 정렬된 상태일 때
13+
if (nums[left] <= nums[mid]) {
14+
// 왼쪽 구간에 있으면 right를 좁히면서 target을 탐색
15+
if (nums[left] <= target && target < nums[mid]) {
16+
right = mid - 1;
17+
}
18+
// 왼쪽 구간에 없다면 오른쪽 구간으로 이동
19+
else
20+
left = mid + 1;
21+
}
22+
// 오른쪽 구간이 정렬된 상태
23+
else {
24+
// 오른쪽 구간에 target이 있으면 left를 좁히면서 target 탐색
25+
if (nums[mid] < target && target <= nums[right]) {
26+
left = mid + 1;
27+
}
28+
// 오른쪽 구간에 없다면 왼쪽 구간으로 이동
29+
else
30+
right = mid - 1;
31+
}
32+
}
33+
return (-1);
34+
}
35+
};

0 commit comments

Comments
 (0)