일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- zeros
- 매트랩
- 머신러닝
- leetcode
- 코딩테스트
- 온라인석사
- Deep learning
- 마니토바
- 캐나다 영주권
- 컴퓨터과학과
- 방통대
- LAA
- EOI
- 딥러닝
- Plotting
- cpp
- MATLAB
- 주정부이민
- mpnp
- C++
- machine learning
- 프로그래머스
- 개발자
- 기본
- 선형대수
- LV1
- omscs
- 조지아텍
- 방송통신대학교
- 알고리즘
Archives
- Today
- Total
Krononberg
1382. Balance a Binary Search Tree.cpp 본문
/**
* Definition for a binary tree node.
* 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 {
public:
vector<TreeNode*>inorder;
void saveNode(TreeNode* root){
if(!root)
return;
saveNode(root->left);
inorder.push_back(root);
saveNode(root->right);
}
TreeNode* rematch(int start,int end){
if(start>end){
return NULL;
}
int mid = (start+end)/2;
TreeNode*root = inorder[mid];
root->left = rematch(start,mid-1);
root->right = rematch(mid+1,end);
return root;
}
TreeNode* balanceBST(TreeNode* root) {
if(root==NULL)
return root;
saveNode(root);
root = rematch(0, inorder.size()-1);
return root;
}
};
'개발 로그 > 알고리즘' 카테고리의 다른 글
1827. Minimum Operations to Make the Array Increasing.cpp (0) | 2021.10.05 |
---|---|
1863. Sum of All Subset XOR Totals.cpp (0) | 2021.10.04 |
763. Partition Labels.cpp (0) | 2021.10.03 |
1605. Find Valid Matrix Given Row and Column Sums.cpp (0) | 2021.10.03 |
1252. Cells with Odd Values in a Matrix.cpp (0) | 2021.10.02 |