1. 程式人生 > 實用技巧 >劍指offer33:二叉搜尋樹的後序遍歷序列

劍指offer33:二叉搜尋樹的後序遍歷序列

題目描述

輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則返回true,否則返回false。假設輸入的陣列的任意兩個數字都互不相同。 該題目兩個隱藏的知識點: 1. 二叉搜尋樹(即二叉排序樹)中序遍歷序列即為該序列的一個有序序列,相當於題目中給出了一箇中序遍歷序列和一個後序遍歷序列,那麼我們可以唯一確定一顆二叉樹 2. 樹的遍歷過程即一個出棧入棧的過程,因此,令一個序列為入棧序列,一個序列為出棧序列,利用《棧的壓入、彈出序列》該題目的思想即可求解。
class Solution {
public:
    bool VerifySquenceOfBST(vector<int
> sequence) { if(sequence.size()==0) return false; vector<int> inOrder(sequence); sort(inOrder.begin(),inOrder.end()); stack<int> s; int j = 0; for(int i=0;i<inOrder.size();i++){ s.push(inOrder[i]); while(!s.empty()&&s.top()==sequence[j]){ s.pop(); j
++; } }
     s.empty();
 } };