輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。(ps:我們約定空樹不是二叉搜尋樹)
輸入[4,8,6,12,16,14,10]
返回值:true
就是根據二叉樹後序遍歷結果判斷是不是 bst。結合他倆的特點:
這樣就比較好解決了,在陣列中找第乙個大於根結點的元素,以此為界把陣列分為左右子樹,並判斷其後的元素是不是都大於根節點,如果不是則不是 bst,如果是則繼續判斷左右子樹,直到遍歷完所有子樹。
ps:我們約定空樹不是二叉搜尋樹這句話的意思是 如果出現空陣列則返回false,而不是不會出現空陣列。。
import
j**a.util.
arrays
;public
class
solution
for(
int i = sep; i < sequence.length -
1; i++
)return
verifysquenceofbst
(arrays
.copyofrange
(sequence,
0, sep))&&
verifysquenceofbst
(arrays
.copyofrange
(sequence, sep, sequence.length -1)
);}}
JZ23 二叉搜尋樹的後序遍歷
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。解 該題目首先需要清楚二叉搜尋樹的概念,二叉搜尋樹 左子樹小於根節點,右子樹大於根節點 然後就是清楚後續遍歷的概念 左子樹 右子樹 根節點 那麼...
劍指 JZ23二叉搜尋樹的後序遍歷序列
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴解法 樹的後序遍歷方式是左右根,比如對於遍歷序列 4,8,6,12,16,14,10 那麼就可以知道10就是根節點,前面的左子樹和右子樹需...
JZ23 劍指offer 二叉搜尋樹的後序遍歷序列
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。class solution bool dfs vector int s,int st,int en for int j i j j retur...