270. Closest Binary Search Tree Value

来源:互联网 发布:windows snmptools 编辑:程序博客网 时间:2024/05/16 11:54
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.

和solution思路大致相同,都是二分查找,但是solution简洁一些
mine
public int closestValue(TreeNode root, double target) {    double mid = Math.abs(target-root.val);    int val = find(root, target);    double diff = Math.abs(target-val);    if(mid < diff) return root.val;    return val;}private int find(TreeNode root, double target) {    if (root.left == null && root.right == null) return root.val;        if (target < root.val && root.left != null) return closestValue(root.left, target);    if (target > root.val && root.right != null) return closestValue(root.right, target);    return root.val;}



solution
public int closestValue(TreeNode root, double target) {    int a = root.val;    TreeNode kid = target < a ? root.left : root.right;    if (kid == null) return a;    int b = closestValue(kid, target);    return Math.abs(a - target) < Math.abs(b - target) ? a : b;}


原创粉丝点击