JZ33 二叉排序树的后序遍历序列
class Solution { public: //判断该数组是不是某二叉搜索树的后序遍历的结果。 //如果是则返回 true ,否则返回 false //注意传入参数是一个int类型的vector容器 bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.empty()) //二叉树为空,则返回flase return false; return VerifyCore(sequence, 0, sequence.size()-1); } //参数:(后序序列,遍历范围左端,遍历范围右端) bool VerifyCore(vector<int> &s, int l, int r) { if(l >= r) //递归结束条件:序列中的值都被遍历完了,也就是从l到r都遍历完了 return true; int root = s[r]; //找到根节点 int i = l; for( ; i<r; i++) //遍历左子树,找到第一个比根大的节点,后边的都是右子树 { if(s[i] > root) break; } for(int j = i; j< r;j++) //遍历右子树,看右子树中是否有比根小的节点,若有,则不是后序遍历序列 { if(s[j]<root) return false; } //返回值是左子树和右子树都满足排序二叉树的条件才可以! return VerifyCore(s, l, i-1) && VerifyCore(s, i, r-1); } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具