剑指 Offer 33. 二叉搜索树的后序遍历序列
给个后序遍历序列,判断是否是二叉搜索树的。
根据定义,最后一个是根,先判断能否按大小分成两部分,然后两部分分别递归。
code
class Solution {
public:
bool verifyPostorder(vector<int>& postorder) {
int n=postorder.size();
if(n==0){
return true;
}
int i=0;
for(;i<n-1;i++){
if(postorder[i]>postorder[n-1]){
break;
}
}
int j=i;
for(;j<n-1;j++){
if(postorder[j]<postorder[n-1]){
return false;
}
}
vector<int> left;
vector<int> right;
for(int k=0;k<i;k++){
left.push_back(postorder[k]);
}
for(int k=i;k<n-1;k++){
right.push_back(postorder[k]);
}
return (verifyPostorder(left) && verifyPostorder(right));
}
};
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步