【剑指Offer】二叉搜索树的后序遍历序列
发布日期:2022-02-10 08:55:14 浏览次数:13 分类:技术文章

本文共 967 字,大约阅读时间需要 3 分钟。

题目

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。

思路

同剑指offer书上思路,好理解很多!

代码

class Solution {public:
bool verifyPostorder(vector & postorder) {
if(postorder.size() <= 0){
return true;
}
int len = postorder.size();
return verify(postorder,0,len);
  }
bool verify(vector & postorder,int start,int len) {
int root = postorder[start + len - 1];
int i = 0;
//比较左子树和根,找到左子树结束位置
for(;i < len - 1;i++){
if(postorder[start +i] > root){
break;
}
}
int j = i;
//比较右子树和根,如果出现比根小的说明不存在这棵树
for(;j < len - 1;j++){
if(postorder[start +j] < root){
return false;
}
}
//递归比较左子树,如果为空的话就默认为true
bool left = true;
if(i > 0)
left = verify(postorder,start +0,i);
//递归比较右子树,如果为空的话就默认为true
bool right = true;
if(i < len-1-i)
right = verify(postorder,start + i,len-1-i);
return left && right;
}};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105674963 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】栈的压入、弹出序列
下一篇:【剑指Offer】从上到下打印二叉树

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2023年02月28日 13时06分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章