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

2022-08-24 01:42:08 字數 1294 閱讀 6569

題目描述

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出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 3

using

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 判斷給定陣列...