根據後序陣列重建搜尋二叉樹

2021-10-23 16:42:46 字數 874 閱讀 3137

根據後序陣列重建搜尋二叉樹

給定乙個有 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重構二叉樹。解答 二叉樹的後序遍歷是先左 再右 最後根的順序,所以,頭節點一定是陣列的最後乙個元素。根據搜...