정렬된 배열을 height-balanced binary tree로 변경하는 문제이다.
정렬된 배열의 가운데를 root 노드로 만들고, 가운데를 기준으로 왼쪽과 오른쪽 배열로 나눈다.
왼쪽과 오른쪽 배열에서 다시 sortedArrayToBST를 호출해주어 tree를 생성해주고 root node의 왼쪽과 오른쪽 child에 붙여주면 된다.
class Solution
{
public:
TreeNode *sortedArrayToBST(vector<int> &nums)
{
if (nums.size() == 0)
{
return nullptr;
}
int mid = nums.size() / 2;
TreeNode *root = new TreeNode(nums[mid]);
vector<int> left, right;
for (int i = 0; i < mid; i++)
{
left.push_back(nums[i]);
}
for (int i = mid + 1; i < nums.size(); i++)
{
right.push_back(nums[i]);
}
root->left = sortedArrayToBST(left);
root->right = sortedArrayToBST(right);
return root;
}
};
반응형
'Algorithm > LeetCode' 카테고리의 다른 글
[Java] leetcode 92. Reverse Linked List II (0) | 2023.07.31 |
---|---|
[c++] leetcode 101. Symmetric Tree (0) | 2022.11.30 |
[c++] LeetCode 84번 Largest Rectangle in Histogram (0) | 2022.11.30 |
[c++] LeetCode 79번 Word Search (0) | 2022.11.16 |
[c++] 41. First Missing Positive (0) | 2022.10.19 |