根據後序陣列重建搜尋二叉樹
給定乙個有 n 個不重複整數的陣列 arr,判斷 arr 是否可能是節點值型別為整數的搜尋二叉樹後序遍歷的結果。
輸入描述:
第一行乙個整數 n,表示陣列的長度。
第二行 n 個整數 arr_i。
輸出描述:
如果是搜尋二叉樹後序遍歷的結果則輸出 「true」,否則輸出 「false」。
示例1輸入
3
1 3 2
輸出true
備註:
1 ≤n
≤5∗1
05
1 \leq n \leq 5*10^5
1≤n≤5∗
105−10
6≤ar
ri≤1
06
-10^6 \leq arr_i \leq 10^6
−106≤a
rri
≤106
題解:二叉搜尋樹的後序遍歷根節點一定在後序陣列末尾,假設後序陣列為 arr ,有 n 個元素,第乙個比 arr[n - 1] 大的元素位置為 m ,則 arr[0,…,m-1] < arr[n - 1]、arr[m,…,n-1] > arr[n - 1],按照這個規律遞迴進行判斷即可。
**:
#include
using
namespace std;
const
int n =
500010
;int n, a[n]
;bool
dfs(
int s,
int e)
intmain
(void
)
根據後序陣列重建搜尋二叉樹
題目 給定乙個整型陣列arr,已知其中沒有重複值,判斷arr是否可能是節點值型別為整型的搜尋二叉樹後序遍歷的結果。public class ispostarray return ispost arr,0,arr.length 1 public static boolean ispost int ar...
根據後序陣列重建搜尋二叉樹
題目 根據後序陣列重建搜尋二叉樹 程式設計師 面試指南 第44題 p148 難度 士 原問題為判斷陣列arr是否可能是搜尋二叉樹後序遍歷的結果,高階問題為通過陣列arr重構二叉樹。原問題的解法 根據二叉樹後序遍歷的順序 左 右 根,頭節點的值一定是陣列的最後乙個元素。然後將除最後乙個元素的陣列一分為...
根據後序陣列重建二叉樹
題目 給定乙個整型陣列arr,已知沒有重複值,判斷arr是否可能是節點值型別為整型的搜尋二叉樹後序遍歷的結果。高階問題 如果整型陣列中沒有重複值,且已知是一棵二叉搜尋樹的後序遍歷結果,通過arr重構二叉樹。解答 二叉樹的後序遍歷是先左 再右 最後根的順序,所以,頭節點一定是陣列的最後乙個元素。根據搜...