270. Closest Binary Search Tree Value

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.

一刷
題解:
方法1,遞歸
遞歸的原理是充择,如果target<root.val, 那么最接近值只會是root或者存在于root的左子樹想括。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int closestValue(TreeNode root, double target) {
       int a = root.val;
        TreeNode kid = a < target? root.right: root.left;
        if(kid == null) return a;
        int b = closestValue(kid, target);
        if(Math.abs(a-target)<Math.abs(b-target)) return a;
        else return b;
    }
}

方法二寞埠,iteration

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int closestValue(TreeNode root, double target) {
        int closest = root.val;
        while(root!=null){
            if(Math.abs(closest-target) >= Math.abs(root.val - target))
                closest = root.val;
            root = target < root.val? root.left: root.right;
        }
        return closest;
    }
}

二刷
同上

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int closestValue(TreeNode root, double target) {
        if((double)root.val == target) return root.val;
        if(target<root.val && root.left == null) return root.val;
        if(target>root.val && root.right == null) return root.val;
        if(target<root.val){
            int left = closestValue(root.left, target);
            if(Math.abs(root.val - target)< Math.abs(left - target))
                return root.val;
            else return left;
        }
        if(target > root.val){
            int right = closestValue(root.right, target);
            if(Math.abs(root.val - target)< Math.abs(right - target))
                return root.val;
            else return right;
        }
        return 0;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末戚丸,一起剝皮案震驚了整個濱河市疗疟,隨后出現的幾起案子梦抢,更是在濱河造成了極大的恐慌额嘿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骇吭,死亡現場離奇詭異橙弱,居然都是意外死亡歧寺,警方通過查閱死者的電腦和手機燥狰,發(fā)現死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門棘脐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人龙致,你說我怎么就攤上這事蛀缝。” “怎么了目代?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵屈梁,是天一觀的道長。 經常有香客問我榛了,道長在讶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任霜大,我火速辦了婚禮构哺,結果婚禮上,老公的妹妹穿的比我還像新娘战坤。我一直安慰自己曙强,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布途茫。 她就那樣靜靜地躺著碟嘴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪囊卜。 梳的紋絲不亂的頭發(fā)上娜扇,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音栅组,去河邊找鬼袱衷。 笑死,一個胖子當著我的面吹牛笑窜,可吹牛的內容都是我干的致燥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼排截,長吁一口氣:“原來是場噩夢啊……” “哼嫌蚤!你這毒婦竟也來了?” 一聲冷哼從身側響起断傲,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤脱吱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后认罩,有當地人在樹林里發(fā)現了一具尸體箱蝠,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了宦搬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牙瓢。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖间校,靈堂內的尸體忽然破棺而出矾克,到底是詐尸還是另有隱情,我是刑警寧澤憔足,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布胁附,位于F島的核電站,受9級特大地震影響滓彰,放射性物質發(fā)生泄漏控妻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一揭绑、第九天 我趴在偏房一處隱蔽的房頂上張望饼暑。 院中可真熱鬧,春花似錦洗做、人聲如沸弓叛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撰筷。三九已至,卻和暖如春畦徘,著一層夾襖步出監(jiān)牢的瞬間毕籽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工井辆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留关筒,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓杯缺,卻偏偏與公主長得像蒸播,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子萍肆,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容