Balance a Binary Search Tree(BST) (Leetcode 1382)

Problem Link: https://leetcode.com/problems/balance-a-binary-search-tree/

class Solution:
    def balanceBST(self, root: TreeNode) -> TreeNode:
        
        global arr
        arr=[]
        def inorder(root):
            global arr
            if(root is None):
                return
            inorder(root.left)
            arr.append(root.val)
            inorder(root.right)
        
        def fun(arr):
            if(len(arr)<=0):
                return None
            elif(len(arr)==1):
                return TreeNode(arr[0])
            
            mid=(len(arr)//2)
            rootnodeval=arr[mid]
            l=fun(arr[:mid])
            r=fun(arr[mid+1:])
            rootnode=TreeNode(rootnodeval)
            rootnode.left=l
            rootnode.right=r
            return rootnode
        
        inorder(root)
        return fun(arr)

Last updated