怎樣應對IT面試與筆試-(五)

二叉搜索樹

二叉樹中的結(jié)點按照一定規(guī)則排序就變成了一顆二叉搜索樹

  • 二叉搜索樹的定義:
  • 它或者是一棵空樹,或者是具有下列性質(zhì)的二叉樹:
    (1) 若它的左子樹不空,則左子樹上所有結(jié)點的值均小于它的根結(jié)點的值搅吁;
    (2) 若它的右子樹不空,則右子樹上所有結(jié)點的值均大于它的根結(jié)點的值;
    (3) 它的左、右子樹也分別為二叉排序樹
  • TIPS 有一點需要注意的是:
  • 左子樹中所有點都要小于根結(jié)點锯茄,右子樹中所有點都要大于根結(jié)點。
  • 下圖中圖a不是一個有效的二叉搜索樹茶没,因為結(jié)點6位于右子樹肌幽,但小于根結(jié)點10,
    圖b是一個有效的二叉搜索樹
BST

98. Validate Binary Search Tree

給一個二叉樹,判斷這個二叉樹是否是有效的二叉搜索樹抓半。

1.舉例子-畫圖-解題思路
2. 寫核心邏輯代碼

先看標準的錯誤代碼:

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        if(!root)
            return true;
        
        return traversal(root);
    }
    bool traversal(TreeNode* root)
    {
        //遞歸的返回條件
        if(!root)
            return true;
         //左結(jié)點存在時候判斷左結(jié)點值小于root值
        if(root->left && root->left->val >= root->val)
            return false;
        //右結(jié)點存在時候判斷右結(jié)點值大于root值
        if(root->right && root->right->val <= root->val)
            return false;
        
       //遞歸檢查左右結(jié)點            
        return traversal(root->left) && traversal(root->right);
    }
};
  • 上述代碼如果執(zhí)行上圖(BST)圖a的case喂急,會返回true,因為6只與15做了比較笛求,沒有比較6與10的大小

看來下面精簡的正確算法

class Solution {
public:
    bool isValidBST(TreeNode *root) {
        //在這里LONG_MIN理解為極小值廊移,LONG_MAX理解為極大值
        return isValidBST(root, LONG_MIN, LONG_MAX);
    }
    bool isValidBST(TreeNode *root, long mn, long mx) {
        if (!root) return true;
        if(root->val < mx && root->val > mn)
              return isValidBST(root->left, mn, root->val) && isValidBST(root->right, root->val, mx);
        else 
            return false;
    }
};

我們還是用圖a的例子來解釋下上面的代碼:
(1)初始函數(shù):isValidBST(10,LONG_MIN, LONG_MAX)
(2)先遞歸遍歷左子樹:isValidBST(5探入,LONG_MIN画机,10),5<10(保證了左結(jié)點小于根結(jié)點) && 5 > LONG_MIN新症,后面的判斷結(jié)點為空的過程我們略去,不再描述响禽。
(3)然后開始遍歷右子樹isValidBST(15徒爹,10,LONG_MAX)芋类,15 <LONG_MAX && 15 >10(保證了右結(jié)點大于根結(jié)點)隆嗅,繼續(xù)執(zhí)行isValidBST(6,10侯繁,15)胖喳,6<15&&6>10,這個判斷是錯誤的贮竟,返回false

BST錯誤例子.png
3. 邊界條件-無
4. 優(yōu)化-無
5. 小結(jié)

除了二叉搜索樹丽焊,還有一些常見的二叉樹結(jié)構我們一并簡單介紹较剃,小伙伴們有個初步印象即可

平衡二叉樹(平衡二叉搜索樹)

本質(zhì)上還是一棵二叉搜索樹。
它的特點是:本身首先是一棵二叉查找樹技健。帶有平衡條件:每個結(jié)點的左右子樹的高度之差的絕對值(平衡因子)最多為1写穴。


平衡二叉樹.png
  • 圖1是二叉搜索樹,但不是平衡二叉樹
  • 圖2是平衡二叉樹
完全二叉樹

除最后一層外雌贱,每一層上的節(jié)點數(shù)都達到最大值啊送;
在最后一層上只缺少右邊的若干結(jié)點


完全二叉樹
滿二叉樹

一個二叉樹,如果每一個層的結(jié)點數(shù)都達到最大值欣孤,則這個二叉樹就是滿二叉樹馋没。


滿二叉樹.png

怎樣應對IT面試與筆試-(一)
怎樣應對IT面試與筆試-(二)
怎樣應對IT面試與筆試-(三)
怎樣應對IT面試與筆試-(四)
怎樣應對IT面試與筆試-(五)
怎樣應對IT面試與筆試-(五-1)
怎樣應對IT面試與筆試-(六)
怎樣應對IT面試與筆試-(七)
怎樣應對IT面試與筆試-(八)
怎樣應對IT面試與筆試-(九)
怎樣應對IT面試與筆試-(十)
怎樣應對IT面試與筆試-(十一)
怎樣應對IT面試與筆試-(十二)
怎樣應對IT面試與筆試-(十三)
怎樣應對IT面試與筆試-(十四)
怎樣應對IT面試與筆試-(十五)
怎樣應對IT面試與筆試-(十六)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市降传,隨后出現(xiàn)的幾起案子篷朵,更是在濱河造成了極大的恐慌,老刑警劉巖搬瑰,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件款票,死亡現(xiàn)場離奇詭異,居然都是意外死亡泽论,警方通過查閱死者的電腦和手機艾少,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翼悴,“玉大人缚够,你說我怎么就攤上這事○惺辏” “怎么了谍椅?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長古话。 經(jīng)常有香客問我雏吭,道長,這世上最難降的妖魔是什么陪踩? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任杖们,我火速辦了婚禮,結(jié)果婚禮上肩狂,老公的妹妹穿的比我還像新娘摘完。我一直安慰自己,他們只是感情好傻谁,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布孝治。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谈飒。 梳的紋絲不亂的頭發(fā)上岂座,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音步绸,去河邊找鬼掺逼。 笑死,一個胖子當著我的面吹牛瓤介,可吹牛的內(nèi)容都是我干的吕喘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼刑桑,長吁一口氣:“原來是場噩夢啊……” “哼氯质!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祠斧,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闻察,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琢锋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辕漂,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年吴超,在試婚紗的時候發(fā)現(xiàn)自己被綠了钉嘹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲸阻,死狀恐怖跋涣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸟悴,我是刑警寧澤陈辱,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站细诸,受9級特大地震影響沛贪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜震贵,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一鹏浅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屏歹,春花似錦、人聲如沸之碗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至幽纷,卻和暖如春式塌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背友浸。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工峰尝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人收恢。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓武学,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伦意。 傳聞我的和親對象是個殘疾皇子火窒,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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