https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree
오름차순 배열이 주어졌을 때, 높이 균형 트리(height-balanced)를 구현하는 문제이다.
분할과 정복을 통해 구현할 수 있었다.
중복 처리가 어렵다면 visit 배열을 만들어서 구현해도 무방하다.
fun sortedArrayToBST(nums: IntArray): TreeNode? {
val mid = nums.size / 2
val root = TreeNode(nums[mid])
root.left = makeTree(nums, 0, mid - 1)
root.right = makeTree(nums, mid + 1, nums.lastIndex)
return root
}
fun makeTree(nums: IntArray, min: Int, max: Int): TreeNode? {
if (min > max) {
return null
}
val mid = (min + max) / 2
val newNode = TreeNode(nums[mid])
newNode.left = makeTree(nums, min, mid - 1)
newNode.right = makeTree(nums, mid + 1, max)
return newNode
}
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] Majority Element - (Kotlin) (0) | 2023.01.20 |
---|---|
[LeetCode] Valid Palindrome - (Kotlin) (0) | 2023.01.16 |
[LeetCode] Symmetric Tree (Kotlin) (0) | 2023.01.14 |
[LeetCode] Merge Sorted Array (Kotlin) (0) | 2023.01.14 |
[LeetCode] Two Sum (Kotlin) (0) | 2022.12.02 |
댓글