Ceil In Binary Search Tree ( BST )| Recursive | Iterative

Reccursive -> Maximum Reccursion Depth Exceeded

class Solution:
    def __init__(self):
        self.ceil = None
    def getSuccessor(self, root, val):
        if root == None:
            return self.ceil
        if root.val == val:
            return self.getSuccessor(root.right,val)
        if root.val < val:
            return self.getSuccessor(root.right,val)
        if root.val > val:
            self.ceil = root
            return self.getSuccessor(root.left,val)

Iterative

class Solution:
    def getSuccessor(self, root, val):
        ceil = None
        while root:
            if root.val == val:
                root = root.right
            elif root.val < val:
                root = root.right
            else:
                ceil = root
                root = root.left

        return ceil
Comments (2)