A1043 Is It a Binary Search Tree

A1043中柳诺的写法要完全优于算法笔记给出的答案,其中对于怎么把先序遍历转换成后序遍历的方法很赞。

void getpost(int root, int tail){// 用了递归, root-头, tail--尾, 分而治之--很像快速排序的写法
    if(root > tail)//递归边界1
        return;
    
    int  i = root + 1;
    int j = tail;
    if(!isMirror){
        while(i <= tail && pre[root] > pre[i])
            i++;
        while(j > root && pre[root] <= pre[j])
            j--;
    }
    else{ //这里利用了二叉查找树的性质,而且像是利用了双指针
        while(i <= tail && pre[root] <= pre[i]) 
            i++;
        while(j > root && pre[root] > pre[j])
            j--;
    }
    
    if(i - j != 1)
        return;
    
    getpost(root + 1, j);//递归式 -- 左子树   !!这二个顺序不能换
    getpost(i, tail);//递归式 -- 右子树
    
    post.push_back(pre[root]); //后序  怎么将先序转换成后序
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题量有点多,建议Ctrl + F题号或题目哦~ 二叉树的遍历(前序遍历,中序遍历,后序遍历)[144] Binar...
    野狗子嗷嗷嗷阅读 9,165评论 2 37
  • 它说它是自由的 它说它被禁锢着 它说它看到了阳光春天 它说它那只有阴暗潮湿 它说它可以愉快的飞翔 它说它只能不停的...
    清风伏笔阅读 297评论 0 10
  • 陪伴 邓永娟 养育孩子是一件非常艰巨的任务。看着孩子一天一天的不同,作为母亲,心里除了欣慰还是欣慰。有人说,孩子的...
    邓永娟阅读 444评论 0 0
  • 银霜打面,青丝白了、还能清秀?少壮无忧,追捧太阳招手。老来腰板全金贵,万事放回身后。改换天地岁,驾云施雨,润生杨柳...
    木貞ma阅读 210评论 2 8
  • 我一直都很羡慕“从前,车马很慢,邮件很远,一声只爱一个人”这样子的生活,如今快节奏的时代,QQ、微信大大缩短了信息...
    北风殷殷阅读 519评论 7 3