劍指 二叉搜索樹的後序遍歷

題目鏈接

後序,左右根。

設l爲左端,r爲右端,vector爲a。 a[r]一定是根。

比a[r]大的都是右兒子,比a[r]小的都是左兒子。

那麼找到一個i爲分界線遞歸判斷即可。

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.size() == 0) return false;
        return dfs(sequence, 0, sequence.size() - 1);
    }
    bool dfs(vector<int> a, int l, int r) {
        if(l >= r) return true;
        int i;
        for(i = r - 1; a[i] >= a[r] && i >= l; i--);
        for(int j = i; j >= l; j--) if(a[j] > a[r]) return false;
        return dfs(a, l, i) && dfs(a, i + 1, r - 1);
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章