劍指offer 二叉搜尋樹的後序遍歷序列

2021-08-22 16:08:05 字數 1104 閱讀 3045

【題目描述】輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果,如果是,則輸出yes,不是輸出no,假設你的二叉搜尋樹的結點各不相同。

有關什麼是二叉搜尋樹,請移步:

由此可以看出,將乙個二叉搜尋樹轉換為乙個後序遍歷的序列,其根結點會將這個序列分為兩部分,一部分比根節點小,一部分比根節點大,所以利用這個特性,將這個序列劃分,之後觀察,如果劃分出來的序列在進行劃分之時,是否仍然滿足這個特性,如果滿足,則是,反之,不是。

方法一:遞迴

在這個序列中,找第一部分,比根節點小的部分,將其壓入到容器中,然後,按照這個方法,繼續找第二部分,也將其壓入到另乙個容器中,如果找到了兩部分,但是最後的下標與根節點的前乙個下標不相等,則表明此時序列中要麼是前半部分有大數,要麼是後半部分有小數,因此這樣的組合並不符合我們所找的序列。

class solution 

else

break;

}bool vleft=true;

if(i>0)

bool vright=true;

if(j方法二:非遞迴

整體也是上面的思路,只不過在這個時候,重複遍歷這個序列,只不過是在遍歷的時候,每一次將最後乙個根節點去除即可,直到只有乙個結點即可

class solution {

public:

bool verifysquenceofbst(vectorsequence) {

if(sequence.empty())

return false;

int size=sequence.size();

while(--size)//先將最後乙個結點去除

{int index=0;

while(sequence[index]sequence[size])

++index;

//找到兩個序列之後,如果此時並沒有到達最後的下標,表明序列不正確

if(index大概的思路就是這樣的,如果有什麼錯誤,希望大家指正。

這世上哪有什麼奇蹟,奇蹟源於不放棄!!!

劍指Offer 二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...

劍指offer 二叉搜尋樹的後序遍歷

時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...

劍指offer 二叉搜尋樹的後序遍歷

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...