劍指Offer 二叉搜尋樹的後序遍歷序列

2021-09-25 10:06:46 字數 1132 閱讀 6808

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

定義:二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

思路:後序遍歷的順序為左右根,所以最後乙個結點為根節點。比根節點小的部分為左子樹,比根節點大的部分為右子樹。

1、從左向右遍歷遇到第乙個比根節點大的數字開始之後為右子樹,如果右子樹**現比根節點小的數字,則不是後序遍歷。

2、遞迴左子樹和右子樹是否滿足條件

public class solution 

public boolean verifysquenceofbst(int sequence,int length)

int root=sequence[length-1];

//在二叉樹搜尋樹中左子節點的值小於根節點的值

int i;

for(i=0;iroot)

}int j=i;

for(;j0)

//判斷右子樹是不是二叉搜尋樹

boolean right=true;

if(i簡潔點的**:

public class solution

int length=sequence.length-1;

return verifysquenceofbst(sequence,0,length);

}public boolean verifysquenceofbst(int sequence,int start,int end)

int i=start;

for(i=start;isequence[end])

break;}}

return verifysquenceofbst(sequence,start,i-1)&&verifysquenceofbst(sequence,i,end-1);

}}

劍指Offer 二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...

劍指offer 二叉搜尋樹的後序遍歷

時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...

劍指offer 二叉搜尋樹的後序遍歷

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...