题目链接:https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
代码如下:
class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { return bst(sequence , 0 , sequence.size() - 1); } bool bst(vector<int> sequence , int begin , int end) { if(sequence.empty() || begin > end) return false; int i = begin; for(; i < end ; i ++) { if(sequence[i] > sequence[end]) break; } for(int j = i + 1 ; j < end; j++) { if(sequence[j] < sequence[end]) return false; } bool left = true; if(i > begin) left = bst(sequence , begin , i - 1); bool right = true; if(i < end) right = bst(sequence , i , end - 1); return left && right; } };
该题又是一个递归运用的很好的例子~