二叉搜尋樹的後序遍歷序列(第23題)

2021-09-26 21:54:30 字數 944 閱讀 2378

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

ac:100%

思路

陣列最後乙個數就是二叉樹的根節點。剩下的數可以分為三種情況:

1、全小於最後乙個數:根節點的左子樹

2、全大於最後乙個數:根節點的右子樹

3、前面一部分小於根節點,後一部分大於根節點

其他情況都不符合二叉搜尋樹後續遍歷的情況

package 牛客;

public class a23二叉搜尋樹的後序遍歷序列

return judge(sequence, 0, sequence.length - 1);

}//判斷

public static boolean judge(int array, int start, int end) else

if(flag == 1)

}return judge(array,start,end - 1);//遞迴判斷子樹

} else else

} else }}

return judge(array, start, index) && judge(array, index + 1, end - 1);}}

return true; }

//測試

public static void main(string args) ;

system.out.println(verifysquenceofbst(array)); }

}/*題目描述

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

*/

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。class solution 思路 已知條件 後序序列最後乙個值為root 二叉搜尋樹左子樹值都比root小,右子樹值都比root大。1 確定root ...

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

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。總結 一 遞迴方式 好理解 1 熟悉後序遍歷原理,後序遍歷陣列最後乙個元素為根節點root 2 判斷找出左 右子樹集合的分界下標,然後分別遞迴判斷 3 ...

23 二叉搜尋樹的後序遍歷

二叉搜尋樹有其規律,中序遍歷是乙個遞增陣列,因此後續遍歷也有了規律,那就是左子樹一定比根節點小,右子樹一定比根節點大,而後續遍歷最後乙個結點必定是根節點。後續遍歷是左 右 根的順序遍歷,所以按照規則來說,在後續遍歷陣列中,從第乙個大於根節點的數開始,剩下的數都應該大於根結點。如果違背這個規律說明這個...