面試題33 二叉搜尋樹的後序遍歷序列 遞迴法

2021-10-06 08:46:18 字數 429 閱讀 4481

採用先序遍歷(自頂向下的方式),分解原問題。

本題的關鍵點在於,如果劃分左、右子樹和根節點。由於題目假定陣列為後序遍歷,存在如下規律:

最後乙個節點必為根節點

區間從左到右,第乙個大於根節點的值為右子樹的根節點。

以上述兩點可以劃分左、右子樹和根節點。

依據左、右子樹不斷的遞迴求解。

返回條件

區間長度小於1時,直接返回true,乙個節點的樹可視為後序遍歷。

如果左子樹存在乙個大於根節點的值 或者右子樹存在乙個小於根節點的值,則不滿足二叉平衡樹定義,則返回false。

public boolean verifypostorder(int postorder) 

public boolean recur(int nums, int i, int j)

面試題33 二叉搜尋樹的後序遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的陣列的任意兩個數字都互不相空間 思路 由於題目沒有給出二叉樹長什麼樣子,只給了乙個陣列,所以我們要從陣列中找到二叉搜尋樹後序序列的規律。後序序列的最後乙個元素是樹的根結點,因此...

劍指 面試題33 二叉搜尋樹的後序遍歷

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的陣列的任意兩個數字都互不相同。思路 1 遞迴判斷左右子樹是不是二叉搜尋樹。2 輸入序列的最後乙個元素是二叉搜尋樹的根節點,前面的可分為左右子樹,其中左子樹小於根節點,右子樹大於...

面試題33 二叉搜尋樹的後序遍歷序列(基本沒思路)

一 題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。二 關鍵 1.遞迴思想。2.分組和分組依據 最後乙個是根節點 比根小的是左子樹,比根大的是右子樹 三 解釋 1.解題依據 在後序遍歷得到的序列中...