輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
分析:採用遞迴的思想,先找出根節點,左子樹元素都必須比根節點小,右子樹節點都比根節點大,否則返回false.
得到子樹(子串行)的兩種方法:
①用下標把陣列 邏輯分為幾個子陣列(這裡採用的是這種)
②用工具類arrays把陣列分割
public class solutionpublic boolean istreeofbst(int sequence,int start,int end)
for(int j=i;j//遞迴
return istreeofbst(sequence,0,i-1)&&istreeofbst(sequence,i,end-1);
}}
二叉搜尋樹後序遍歷序列判斷
問題 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解析 1 所謂二叉搜尋樹,是指空樹,或其左子樹的元素都小於根元素,右子樹的元素都大於根元素,且其左子樹和右 子樹都是二叉搜尋樹。2 二叉搜尋樹後序遍歷序列有...
二叉搜尋樹的後序遍歷判斷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。之前對於二叉搜尋樹,只知道中序遍歷是遞增的,今天做到這道題目,要求判斷陣列是不是二叉搜尋樹後序遍歷的結果,一開始有點懵,後來在紙上畫畫,感覺很像遞迴的感覺,有一種...
二叉搜尋樹的後序遍歷序列
題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是返回true,否則返回false。假設輸入的陣列的任意兩個數字都不相同。解答 二叉搜尋樹後序遍歷最後訪問的是根節點,根據根節點將陣列分成兩部分,前面一部分即左子樹值小於根節點值,後面一部分即右子樹的值大於根節點 再遞迴的檢查...