1
1
# Python program to convert sorted array into Binary Search Tree
2
2
# Definition for a binary tree node.
3
- class TreeNode (object ):
4
-
5
- def __init__ (self , val = 0 , left = None , right = None ):
6
- self .val = val
7
- self .left = left
8
- self .right = right
9
-
10
- class Solution (object ):
11
-
12
- def recursive (self , nums ):
13
- def rec (nums , start , end ):
14
- if start <= end :
15
- mid = (start + end ) // 2 # calculating root node
16
- node = TreeNode (nums [mid ])
17
- node .left = rec (nums , start , mid - 1 ) # recursive call to function recursive
18
- node .right = rec (nums , mid + 1 , end )
19
- return node
20
- return rec (nums , 0 , len (nums ) - 1 )
21
-
22
- sol = Solution () # Creation of object
23
- nums = [- 10 ,- 3 ,0 ,5 ,9 ]
24
- sol .recursive (nums )
3
+ class Node :
4
+ def __init__ (self , d ):
5
+ self .data = d
6
+ self .left = None
7
+ self .right = None
8
+
9
+ def sortedArrayToBST (nums ):
10
+ if not nums :
11
+ return None
12
+
13
+ mid = (len (nums )) // 2
14
+
15
+ root = Node (nums [mid ]) # make the middle element the root
16
+
17
+ root .left = sortedArrayToBST (nums [:mid ]) # all values < nums[mid]
18
+
19
+ root .right = sortedArrayToBST (nums [mid + 1 :]) # all values > nums[mid]
20
+ return root
21
+
22
+ def preOrder (node ): # function to print the tree
23
+ if not node :
24
+ return None
25
+
26
+ print (node .data )
27
+ preOrder (node .left )
28
+ preOrder (node .right )
29
+
30
+ # driver program
31
+ nums = [5 ,6 ,7 ,8 ,9 ,10 ,11 ]
32
+ root = sortedArrayToBST (nums )
33
+ print ("PreOrder Traversal of constructed BST " )
34
+ preOrder (root )
0 commit comments