Skip to content

Commit 8260140

Browse files
committed
Convert Sorted Array to Binary Search Tree/ Convert Sorted List to Binary Search Tree
1 parent 1341757 commit 8260140

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Definition for a binary tree node.
2+
class TreeNode(object):
3+
def __init__(self, x):
4+
self.val = x
5+
self.left = None
6+
self.right = None
7+
8+
9+
class Solution(object):
10+
def sortedArrayToBST(self, nums):
11+
"""
12+
:type nums: List[int]
13+
:rtype: TreeNode
14+
"""
15+
return self._sortedArrayToBST(nums, 0, len(nums))
16+
17+
def _sortedArrayToBST(self, nums, left, right):
18+
if left == right:
19+
return None
20+
mid = (left + right) >> 1
21+
root = TreeNode(nums[mid])
22+
root.left = self._sortedArrayToBST(nums, left, mid)
23+
root.right = self._sortedArrayToBST(nums, mid + 1, right)
24+
return root
25+
26+
27+
if __name__ == "__main__":
28+
None
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Definition for singly-linked list.
2+
class ListNode(object):
3+
def __init__(self, x):
4+
self.val = x
5+
self.next = None
6+
7+
8+
# Definition for a binary tree node.
9+
class TreeNode(object):
10+
def __init__(self, x):
11+
self.val = x
12+
self.left = None
13+
self.right = None
14+
15+
16+
class Solution(object):
17+
def sortedListToBST(self, head):
18+
"""
19+
:type head: ListNode
20+
:rtype: TreeNode
21+
"""
22+
node, length = head, 0
23+
while node:
24+
node = node.next
25+
length += 1
26+
self.curr = head
27+
return self._sortedListToBST(0, length - 1)
28+
29+
def _sortedListToBST(self, left, right):
30+
if left > right:
31+
return None
32+
mid = (left + right) // 2
33+
left = self._sortedListToBST(left, mid - 1)
34+
root = TreeNode(self.curr.val)
35+
root.left = left
36+
self.curr = self.curr.next
37+
root.right = self._sortedListToBST(mid + 1, right)
38+
return root
39+
40+
41+
if __name__ == "__main__":
42+
None

0 commit comments

Comments
 (0)