Skip to content

Commit da9fc78

Browse files
Update Sorted-array-to-BST.py
1 parent 579162b commit da9fc78

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed
Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
# Python program to convert sorted array into Binary Search Tree
22
# 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

Comments
 (0)