text: """
  Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target.
  
  Note:
  
  Given target value is a floating point.
  You are guaranteed to have only one unique value in the BST that is closest to the target.
  Example:
  
  Input: root = [4,2,5,1,3], target = 3.714286
  
      4
     / \
    2   5
   / \
  1   3
  
  Output: 4
  """
  
  #TC O(H)
  
  # Definition for a binary tree node.
  # class TreeNode(object):
  #     def __init__(self, val=0, left=None, right=None):
  #         self.val = val
  #         self.left = left
  #         self.right = right
  class Solution(object):
      def closestValue(self, root, target):
          closest = root.val
          while root:
              closest = min(root.val, closest, key = lambda elem: abs(target - elem))
              root = root.left if target < root.val else root.right
          return closest
  