演算法複習 二叉搜尋樹的後序遍歷序列

2021-08-05 20:01:22 字數 797 閱讀 4442

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

首先看看這個圖對應的後序遍歷序列的陣列,,由於二叉搜尋樹的特點:左子樹節點的值要比根節點小,右子樹節點的值要比根節點大。所以對應的可以將陣列分成三段,,,分別是左子樹,右子樹,根。

看出特點即有了思路,從頭開始找到比根節點大的位置停,後面的數假如比根節點大就可以返回假,否則就遞迴判斷左右子樹。注意邊界下標和遞迴的出口,當為空的時候返回假,只有乙個數的時候返回真。

public boolean verifysquenceofbst(int sequence) 

public boolean verifysquenceofbst(int sequence, int low, int high)

int j = i;

for (; j < high; j++)

boolean left = true;

if (i > low)

verifysquenceofbst(sequence, low, i - 1);

boolean right = true;

if (i < high)

verifysquenceofbst(sequence, i, high - 1);

return (left && right);

}

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 首先要知道二叉搜尋樹的定義 或者是一棵空樹...