题解 | #根据后序和中序还原二叉树#

二叉搜索树的后序遍历序列

http://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd

我们知道知道前序和中序就能还原二叉树,知道后序和中序也能还原二叉树。 此题虽然表面只给出了后序遍历序列,但是还给出了一个隐含条件: 此树是一个二叉搜索树,所以我们就知道了其中序遍历序列单调递增,根据其后序序列排个序可得中序序列,然后还原二叉树就行了,还原不了就是false,能还原就是true。

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.size()==0)return false;
        vector<int > mid = sequence;
        sort(mid.begin(),mid.end());//构造中序遍历序列
        int len=sequence.size();
        int id= len-1;
        return judge(mid, sequence, 0, len, id);
    }
    //根据后序和中序逆遍历二叉树
    bool judge(vector<int> mid,vector<int> sequence,int l,int r,int &id){
        if(l>=r)return true;//此子树为空
        /*
            根据后序序列 定 子树的根
        */
        int i;
        for(i=l;i<r;i++){
            if(mid[i]==sequence[id])break;
        }
        if(i>=r)return false;
        id--;
//         ------------------------------
        //递归划分区间
        bool f1=judge(mid, sequence,i+1, r, id);
        if(f1==false)return false;
        bool f2=judge(mid, sequence,l, i, id);
        return f2;
    }
};
全部评论

相关推荐

05-12 10:10
已编辑
门头沟学院 人工智能
写这篇之前我犹豫了挺久。一方面是怕被人骂,&quot;又一个收割焦虑的转行帖&quot;;另一方面是看了太多用&nbsp;GPT&nbsp;套娃出来的「学习路线」文章,AI&nbsp;味重得让人没法读完。所以这篇全是亲身踩过的坑,时间线、用过的项目、当时的心路全都尽量原样写出来。如果你是大学生在迷茫要不要转&nbsp;AI,或者已经在转的路上,希望能给点参考。&nbsp;一个反共识的开场:你以为进&nbsp;OpenAI&nbsp;的人都是博士?&nbsp;先讲个故事,跟我没关系,但跟所有想转&nbsp;AI&nbsp;的人都有关系。&nbsp;OpenAI&nbsp;的&nbsp;Sora&nbsp;团队(就是搞文生视频那个)一共&nbsp;13&nbsp;个人。这里面有两个人特别有意思:&nbsp;Will&nbsp;DePue,密歇根大学计算机系,直接辍学了。17...
_hengheng:我也本,也算是做ai相关,我最开始感觉做ai工程师有多么多么困难,后来发现懂了原理后整体训练完全可以看成一个流程化的内容,开源方案太多了,大多基本都是按着模子在自家业务上做各种操作,就算是大厂的小部门也没那么多资源去训基模,反而更多的是像怎么把技术往业务方向靠近了,不过当前时代如果本科学历没那么好加上自己执行力不是特别强还真不建议走ai工程师这条路,可以试试其他ai的偏业务方向,不然校招不太好杀出来
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧! 对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
你都用vibe codi...
点赞 评论 收藏
分享
XingHaozhe:没啥大问题啊,Agent + 后端业务,勇敢投!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务