1. 문제
2. 나의 풀이
2.1 divide and conquer
- 어쨌든 리스트를 왼쪽 노드와 오른쪽 노드로 나누는 문제임
- 얼마다 균형있게 나누는가가 포인트 인데, 이미 오름차순으로 정렬되어 있기 때문에 가장 가운데 값을 루트로 두면 될 것 같음
class Solution(object):
def sortedArrayToBST(self, nums):
"""
:type nums: List[int]
:rtype: TreeNode
"""
head = TreeNode();
def divideConquer(node, nums):
if len(nums) >= 3:
print("3333")
mid = len(nums)//2
node.val = nums[mid]
node.left = divideConquer(TreeNode(), nums[:mid])
node.right = divideConquer(TreeNode(), nums[mid+1:])
return node
if len(nums) == 2:
node.val=nums.pop()
node.left = TreeNode(nums.pop())
return node
if len(nums) == 1:
node.val=nums.pop()
return node
divideConquer(head, nums)
return head
3. 남의 풀이