Skip to content

Commit dff9b59

Browse files
authored
Merge pull request #113 from april12925/patch-1
Added variable "self" to perfect_tree_pivot()
2 parents b8bb0a9 + 7bed1ca commit dff9b59

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

Python/convert-sorted-array-to-binary-search-tree.py

+18-15
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,25 @@ def __init__(self, x):
1111
self.left = None
1212
self.right = None
1313

14-
class Solution:
15-
# @param num, a list of integers
16-
# @return a tree node
17-
def sortedArrayToBST(self, num):
18-
return self.sortedArrayToBSTRecu(num, 0, len(num))
14+
15+
class Solution(object):
16+
def sortedArrayToBST(self, nums):
17+
"""
18+
:type nums: List[int]
19+
:rtype: TreeNode
20+
"""
21+
return self.sortedArrayToBSTRecu(nums, 0, len(nums))
22+
23+
def sortedArrayToBSTRecu(self, nums, start, end):
24+
if start == end:
25+
return None
26+
mid = start + self.perfect_tree_pivot(end - start)
27+
node = TreeNode(nums[mid])
28+
node.left = self.sortedArrayToBSTRecu(nums, start, mid)
29+
node.right = self.sortedArrayToBSTRecu(nums, mid + 1, end)
30+
return node
1931

20-
@staticmethod
21-
def perfect_tree_pivot(n):
32+
def perfect_tree_pivot(self, n):
2233
"""
2334
Find the point to partition n keys for a perfect binary search tree
2435
"""
@@ -34,14 +45,6 @@ def perfect_tree_pivot(n):
3445
return n - x // 2 # case 2 == n - (x//2 - 1) - 1 : the left subtree of the root
3546
# has more nodes and the right subtree is perfect.
3647

37-
def sortedArrayToBSTRecu(self, num, start, end):
38-
if start == end:
39-
return None
40-
mid = start + self.perfect_tree_pivot(end - start)
41-
node = TreeNode(num[mid])
42-
node.left = self.sortedArrayToBSTRecu(num, start, mid)
43-
node.right = self.sortedArrayToBSTRecu(num, mid + 1, end)
44-
return node
4548

4649
if __name__ == "__main__":
4750
num = [1, 2, 3]

0 commit comments

Comments
 (0)