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

2021-09-28 15:29:25 字數 1037 閱讀 6856

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

對於乙個二叉搜尋樹的後序遍歷的結果,例如,陣列,我們知道最後乙個數字是根結點的值。陣列中前面的數字可以分為兩部分:第一部分是左子樹的值,他們都比根節點的值小;第二部分是右子樹的值,它們都比根節點的值大。

接著,我們同樣可以用上面的方法。對於第一部分分析,6是左子樹根節點的值,前面的數字又可以分為兩部分。同理,對於第二部分分析,10是右子樹根節點的值,前面的數字又可以分為兩部分。

可以看出,這是乙個遞迴的過程。

class

solution

bool

judgebst

(vector<

int> seq,

int begin,

int end)

// 根節點的值

int rootnum = seq[end]

;// 左子樹節點的值小於根節點的值

int i = begin;

for(

; i < end; i++)}

// 右子樹節點的值大於於根節點的值

for(

int j = i; j < end; j++)}

// 判斷左子樹是否為二叉搜尋樹

bool left =

true;if

(i > begin)

// 判斷右子樹是否為二叉搜尋樹

bool right =

true;if

(i < end -1)

return

(left && right);}

};

劍指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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...