classSolution{public:intclosestValue(TreeNode*root,doubletarget){// If target < root->val, search left subtreeif(target<root->val&&root->left){constintleft=closestValue(root->left,target);if(abs(left-target)<abs(root->val-target))returnleft;}// If target > root->val, search right subtreeif(target>root->val&&root->right){constintright=closestValue(root->right,target);if(abs(right-target)<abs(root->val-target))returnright;}returnroot->val;}};
classSolution{publicintclosestValue(TreeNoderoot,doubletarget){// If target < root.val, search left subtreeif(target<root.val&&root.left!=null){finalintleft=closestValue(root.left,target);if(Math.abs(left-target)<Math.abs(root.val-target))returnleft;}// If target > root.val, search right subtreeif(target>root.val&&root.right!=null){finalintright=closestValue(root.right,target);if(Math.abs(right-target)<Math.abs(root.val-target))returnright;}returnroot.val;}}
classSolution:defclosestValue(self,root:Optional[TreeNode],target:float)->int:# If target < root.val, search left subtreeiftarget<root.valandroot.left:left=self.closestValue(root.left,target)ifabs(left-target)<abs(root.val-target):returnleft# If target > root.val, search right subtreeiftarget>root.valandroot.right:right=self.closestValue(root.right,target)ifabs(right-target)<abs(root.val-target):returnrightreturnroot.val