98. 驗證二叉搜索樹

題目描述

98. 驗證二叉搜索樹

思路

這個題思路我想的是錯的,對二叉樹的定義有所誤解堕澄。正確的理解是脯厨,根節(jié)點大于左子樹『所有』節(jié)點仰猖,并且小于右子樹『所有』節(jié)點。而我的理解是扒披,根節(jié)點大于左孩子乐导,并且小于右孩子典阵。我的理解還不到位奋渔。這個case過不了。


image.png

有了正確的理解后壮啊,代碼不會寫卒稳,怎樣描述 root大于左子樹『所有』節(jié)點這個概念?
看了答案人家都用的上下限他巨,不懂是在干嘛充坑。
呢呢告訴我,描述 root大于左子樹『所有』節(jié)點 => root大于左子樹所有節(jié)點最大值染突,
描述root小于右子樹『所有』節(jié)點 => root小于右子樹所有節(jié)點最小值捻爷。
很有道理,但是感覺實現(xiàn)起來份企,也是不夠直接也榄,有重復計算。

后來仔細想了下上下限司志,突然明白了甜紫。
如果是二叉搜索樹,中序遍歷結(jié)果是有序的呀骂远,那么每個節(jié)點都有左右鄰居吧囚霸,左右鄰居就是他的上下限。
回到上面那個圖激才,為啥這個case不能過拓型,因為6不滿足上下限(10,15)這個條件瘸恼。
用上下限來描述劣挫,就很直接,好實現(xiàn)东帅。注意一點压固,有個case是INT最大值,因此上下限要用long long靠闭。

代碼

錯誤的:

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        if (!root) return true;
        bool left = true;
        bool right = true;
        if (root->left) {
            left = root->left->val < root->val;
        }
        if (root->right) {
            right = root->right->val > root->val;
        }
        return left && right && isValidBST(root->left) && isValidBST(root->right);    
    }
};

正確的

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        return within(root, LONG_MIN, LONG_MAX);
    }
    bool within(TreeNode* root, long long min, long long max) {
        if (!root) return true;
        if (root->val <= min || root->val >= max) return false;
        return within(root->left, min, root->val) && within(root->right, root->val, max);
    }
};

總結(jié)

思路:引入上下邊界 (這個思路我覺得挺難想到帐我,我剛看答案一下子還不能理解刘莹,上下邊界是什么玩意》俑眨可能是我思路不開闊,腦子慢半拍)

對于樹的每個節(jié)點 val 扇调,設(shè)其上下邊界 low , high矿咕。(用 long 防止 INT_MAX 溢出 )
判斷根結(jié)點時,須滿足 low < val < high 狼钮,否則返回 false
判斷左節(jié)點時碳柱,僅 上界 變化 ( 新上界為 high 與 val 較小值。又因 val 必小于 high熬芜,故新上界為 val )
判斷右節(jié)點時莲镣,僅 下界 變化 ( 同理,新下界為 val )


2021.3.15 有新的思路 更好理解

class Solution {
public:
    long pre = LONG_MIN;
    bool isValidBST(TreeNode* root) {
        if (!root) {
            return true;
        }
        // left
        if (!isValidBST(root->left)) {
            return false;
        }
        // root
        if (pre >= root->val) {
            return false;
        }
        pre = root->val;
        // right
        if (!isValidBST(root->right)) {
            return false;
        }
        return true;
    }
};

二叉搜索樹涎拉,他的中序遍歷序列是遞增的哦瑞侮!中序遍歷時,判斷當前節(jié)點是否大于中序遍歷的前一個節(jié)點鼓拧,如果大于半火,說明滿足 BST,繼續(xù)遍歷季俩;否則直接返回 false钮糖。所以用一個pre變量記錄中序遍歷的上一個節(jié)點。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酌住,一起剝皮案震驚了整個濱河市店归,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酪我,老刑警劉巖消痛,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異都哭,居然都是意外死亡肄满,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門质涛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稠歉,“玉大人,你說我怎么就攤上這事汇陆∨ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵毡代,是天一觀的道長阅羹。 經(jīng)常有香客問我勺疼,道長,這世上最難降的妖魔是什么捏鱼? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任执庐,我火速辦了婚禮,結(jié)果婚禮上导梆,老公的妹妹穿的比我還像新娘轨淌。我一直安慰自己,他們只是感情好看尼,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布递鹉。 她就那樣靜靜地躺著,像睡著了一般藏斩。 火紅的嫁衣襯著肌膚如雪躏结。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天狰域,我揣著相機與錄音媳拴,去河邊找鬼。 笑死兆览,一個胖子當著我的面吹牛禀挫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拓颓,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼语婴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驶睦?” 一聲冷哼從身側(cè)響起砰左,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎场航,沒想到半個月后缠导,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡溉痢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年僻造,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孩饼。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡髓削,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镀娶,到底是詐尸還是另有隱情立膛,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站宝泵,受9級特大地震影響好啰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儿奶,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一框往、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闯捎,春花似錦椰弊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闹司。三九已至娱仔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間游桩,已是汗流浹背牲迫。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留借卧,地道東北人盹憎。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像铐刘,于是被迫代替她去往敵國和親陪每。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容