演算法練習 二叉搜尋樹的後序遍歷序列 遞迴

2021-10-08 18:32:38 字數 612 閱讀 1618

題目:

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

示例:

個人思路:

根據二叉搜尋樹的後序遍歷可以知道最後乙個數是當前節點,而左樹從開頭開始並且比當前節點小的序列,右樹是從左樹之後到當前節點前一位。所以只要從頭開始找到左右樹的序列,在判斷右樹最後乙個節點是不是當前節點的前乙個,如果不是,那麼無法構成二叉搜尋樹,同時二叉搜尋樹的左右子樹也必須是二叉搜尋樹。

**:

class solution 

public boolean help(int postorder,int i,int j)

int min=i;

while(postorder[min]postorder[j])

return max==j&&help(postorder,i,min-1)&&help(postorder,min,j-1);}}

LeetCode 樹 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的陣列的任意兩個數字都互不相同。示例 輸入 1,6,3,2,5 輸出 false 輸入 1,3,2,6,5 輸出 true說明 二叉搜尋樹的後序遍歷序列的最後乙個節點是根節點,除去最後...

二叉搜尋樹的後序遍歷

二叉搜尋樹的後序遍歷序列中,最後乙個值是根結點,前面比根節點小的是左結點,後面比根結點大的是右結點。include include bool verifysquenceofbst int sequence,int length int root sequence length 1 int i 0 在...

二叉搜尋樹的後序遍歷

描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷。如果是,則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。1 樣例輸入 5 7 6 9 11 10 8 1 樣例輸出 yes 2 樣例輸入 7 4 6 5 2 樣例輸出 no 首先要知道二叉搜尋樹的定義 或者是一棵空樹...