24 二叉搜索樹的后序遍歷序列

二叉搜索樹的后續(xù)遍歷

題目描述:

輸入一個(gè)整數(shù)數(shù)組评疗,判斷該數(shù)組是不是某二叉搜索樹的后序遍歷的結(jié)果测砂。如果是則輸出Yes,否則輸出No。假設(shè)輸入的數(shù)組的任意兩個(gè)數(shù)字都互不相同百匆。

解題思路:

  1. 根據(jù)后續(xù)遍歷的特點(diǎn)砌些,每次遍歷到根結(jié)點(diǎn)的時(shí)候都是最后一位
  2. 而二叉搜索樹的特點(diǎn)就是左子樹都小于等于root,右子樹都大于等于root
  3. 所以加匈,先找到根結(jié)點(diǎn)存璃,然后由前向后遍歷該序列
  4. 開始的部分的數(shù)值應(yīng)該都是小于等于root的(左子樹),當(dāng)某個(gè)結(jié)點(diǎn)大于root的值的時(shí)候矩动,此結(jié)點(diǎn)開始就是右子樹
  5. 遍歷右子樹的所有數(shù)值(后序遍歷的中后段)有巧,如果有數(shù)值小于root,則說(shuō)明該序列不是后續(xù)遍歷序列
  6. 遞歸地判斷做子樹和右子樹悲没,如果左右子樹也都是滿足后續(xù)遍歷的特點(diǎn),那么整個(gè)序列就都滿足后續(xù)遍歷的特點(diǎn)男图。

代碼:

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        if (sequence.empty()) {
            return false;
        }
        int length = sequence.size();
        int root = sequence[length - 1];

        // 從前向后遍歷sequence序列
        int i = 0;
        for (; i < length - 1; ++i) {
            if (sequence[i] > root) 
                break;
        }

        // 用另外一個(gè)變量來(lái)記錄右子樹開始的地方
        int j = i;
        // 遍歷右子樹示姿,如果右子樹中有元素小于root,則返回false
        for (; j < length - 1; j++) {
            if (sequence[j] < root) {
                return false;
            }
        }

        bool left = true;
        bool right = true;
        vector<int> leftSeq, rightSeq;
        for (int count = 0; count < i; ++count) {
            leftSeq.push_back(sequence[count]);
        }
        for (int count = i; count < length - 1; ++count) {
            rightSeq.push_back(sequence[count]);
        }

        // 如果左子樹不是空樹逊笆,即左子樹的結(jié)尾結(jié)點(diǎn)大于0
        // 遞歸驗(yàn)證左半子樹
        if (i > 0) {
            left = VerifySquenceOfBST(leftSeq);
        }
        // 如果右子樹不是空樹
        // 遞歸驗(yàn)證右半子樹
        if (i < length - 1) {
            right = VerifySquenceOfBST(rightSeq);
        }

        return left && right;
    }
};

2018.10.12

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栈戳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子难裆,更是在濱河造成了極大的恐慌子檀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乃戈,死亡現(xiàn)場(chǎng)離奇詭異褂痰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)症虑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門缩歪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谍憔,你說(shuō)我怎么就攤上這事匪蝙≈骷” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵逛球,是天一觀的道長(zhǎng)千元。 經(jīng)常有香客問(wèn)我,道長(zhǎng)颤绕,這世上最難降的妖魔是什么诅炉? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮屋厘,結(jié)果婚禮上涕烧,老公的妹妹穿的比我還像新娘。我一直安慰自己汗洒,他們只是感情好议纯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溢谤,像睡著了一般瞻凤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上世杀,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天阀参,我揣著相機(jī)與錄音,去河邊找鬼瞻坝。 笑死蛛壳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的所刀。 我是一名探鬼主播衙荐,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浮创!你這毒婦竟也來(lái)了忧吟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斩披,失蹤者是張志新(化名)和其女友劉穎溜族,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垦沉,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煌抒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乡话。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摧玫。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诬像,到底是詐尸還是另有隱情屋群,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布坏挠,位于F島的核電站芍躏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏降狠。R本人自食惡果不足惜对竣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榜配。 院中可真熱鬧否纬,春花似錦、人聲如沸蛋褥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烙心。三九已至膜廊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淫茵,已是汗流浹背爪瓜。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匙瘪,地道東北人铆铆。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辆苔,于是被迫代替她去往敵國(guó)和親算灸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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

  • 題目描述 輸入一個(gè)整數(shù)數(shù)組驻啤,判斷該數(shù)組是不是某二叉搜索樹的后序遍歷的結(jié)果。如果是則輸出Yes,否則輸出No荐吵。假設(shè)輸...
    _minimal閱讀 466評(píng)論 0 0
  • 由后序遍歷可知先煎,序列的最后一個(gè)數(shù)字是樹的根節(jié)點(diǎn)的值贼涩。數(shù)組中前面的數(shù)字,可以分為兩部分:第一部分是左子樹節(jié)點(diǎn)的值薯蝎,他...
    小碧小琳閱讀 220評(píng)論 0 1
  • 題目:輸入一個(gè)整數(shù)數(shù)組遥倦,判斷該數(shù)組是不是某二叉搜索樹的后序遍歷的結(jié)果。 分析:后序遍歷:左右根二叉搜索樹:左子樹都...
    qmss閱讀 178評(píng)論 0 0
  • 題目:輸入一個(gè)整數(shù)數(shù)組,判斷該數(shù)組是不是某二叉搜索樹的后序遍歷的結(jié)果袒哥。如果是則返回true缩筛。否則返回false。假...
    3e1094b2ef7b閱讀 264評(píng)論 0 0
  • 超脫 我從未如此深刻的感受到堡称,與靈魂相距甚遠(yuǎn)瞎抛,而我的存在卻如此真實(shí)。 ——阿貝爾·加繆 這兩周看的書都很零散却紧,沒(méi)有...
    郭海濤閱讀 1,275評(píng)論 0 0