【資料結構】【二叉樹】四、二叉搜尋樹的特性(不斷補充)

西西敏發表於2020-12-28


刷leetcode進入了中等題目階段,發現二叉搜尋樹有一些解題技巧可循,故記錄於此。

一、題目1:二叉搜尋樹的後序遍歷序列(劍指Offer 33)

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

參考以下這顆二叉搜尋樹:

     5
    / \
   2   6
  / \
 1   3

示例:

輸入: [1,6,3,2,5]
輸出: false

解:

要把握住後序遍歷二叉搜尋樹的後序遍歷的特性:

1. 後序遍歷的兩個特性

最後一個節點是根節點

先左子樹、後右子樹,根節點放在最後最後最後

2.二叉搜尋樹的特性

左子樹比根節點小,右子樹比根節點大

3.二叉搜尋樹的後序遍歷的特性

根節點在最後;

第一個比根節點大的數,一定在右子樹,陣列中它左邊的所有值,一定在左子樹;它右邊的所有值,一定在右子樹(除了最後的根節點)

這樣再去對左子樹、右子樹做相同的判斷,遞迴+分治,即可完成判斷任務。

注:二叉搜尋樹的中序遍歷特性

二叉搜尋樹的中序遍歷結果,是從小到大排列的一個有序陣列。

相關文章