How to find the closest element to a given key value in a binary search tree?

后端 未结 10 995
刺人心
刺人心 2020-12-25 14:58

Given a bst with integer values as keys how do I find the closest node to that key in a bst ? The BST is represented using a object of nodes (Java). Closest will be for eg 4

10条回答
  •  -上瘾入骨i
    2020-12-25 15:36

    Here's a recursive solution in Python:

    def searchForClosestNodeHelper(root, val, closestNode):
        if root is None:
            return closestNode
    
        if root.val == val:
            return root
    
        if closestNode is None or abs(root.val - val) < abs(closestNode.val - val):
            closestNode = root
    
        if val < root.val:
            return searchForClosestNodeHelper(root.left, val, closestNode)
        else:
            return searchForClosestNodeHelper(root.right, val, closestNode)
    
    def searchForClosestNode(root, val):
        return searchForClosestNodeHelper(root, val, None)
    

提交回复
热议问题