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

2022-09-19 04:15:09 字數 778 閱讀 5404

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