題目描述
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
解題思路:本題中的樹為二叉搜尋樹,滿足左《根《右
1)求出陣列最後乙個元素,為根節點
2)遍歷,將所有連續小於sequence[n-1]的存入vector left中
3)將連續大於的存入vector right中 如果存在小於的,則直接返回false,無法構造二叉搜尋樹
4)然後對left進行遞迴處理,如果right為空則直接返回left_val
5)對right做遞迴處理,如果left為空,則直接返回right_val
6)否則返回(left_val && right_val)
注意點:本題中如果要遍歷的陣列的長度為1了,直接返回true,否則,遞迴永遠返回false
1 #include 2 #include 3using
namespace
std;
4class
solution
25left.push_back(sequence[i]);26}
27//
搜尋二叉樹,右子樹均大於根
28for(int j = i;j1;j++)
2934
35//
遍歷左子樹
36bool left_val = true
;37 left_val =verifysquenceofbst(left);
3839
if(right.size()==0) //
需要判斷右子樹是否為空,若只有左子樹,返回
40return
left_val;
41//
遍歷右子樹
劍指offer系列(23)二叉搜尋樹的後序遍歷序列
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。樣例 輸入 輸出 true 思路分析 遞迴思路 已知條件 後序序列最後乙個值為root 二叉搜尋樹左子樹值都比root小,右子樹值都比root大。1 確...
劍指offer 23 二叉搜尋樹的後續遍歷
程式設計資料獲取 codelab 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。我們先來了解一下什麼是二叉搜尋樹 二叉查詢樹 binarysearchtree 也稱為二叉搜尋樹 有序二叉樹或排序二叉樹是指一棵...
劍指offer 二叉樹 二叉樹搜尋樹
package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...