@@ -11,14 +11,25 @@ def __init__(self, x):
11
11
self .left = None
12
12
self .right = None
13
13
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
19
31
20
- @staticmethod
21
- def perfect_tree_pivot (n ):
32
+ def perfect_tree_pivot (self , n ):
22
33
"""
23
34
Find the point to partition n keys for a perfect binary search tree
24
35
"""
@@ -34,14 +45,6 @@ def perfect_tree_pivot(n):
34
45
return n - x // 2 # case 2 == n - (x//2 - 1) - 1 : the left subtree of the root
35
46
# has more nodes and the right subtree is perfect.
36
47
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
45
48
46
49
if __name__ == "__main__" :
47
50
num = [1 , 2 , 3 ]
0 commit comments