给定一个不为空的二叉搜索树和一个目标值 target,请在该二叉搜索树中找到最接近目标值 target 的数值。
注意:
输入: root = [4,2,5,1,3],目标值 target = 3.
输出: 4
思路:二分,当前节点比target大就往左边搜(因为右边的差距更大),当前节点比target小就往右搜(因为左边的差距更大)。
/ * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int closestValue(TreeNode root, double target) { int val, closest = root.val; while (root != null) { val = root.val; closest = Math.abs(val - target) < Math.abs(closest - target) ? val : closest; root = target < root.val ? root.left : root.right; } return closest; } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227001.html原文链接:https://javaforall.net
