美文网首页
A1043 Is It a Binary Search Tre

A1043 Is It a Binary Search Tre

作者: 土豆有点 | 来源:发表于2017-09-19 10:59 被阅读22次

    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]); //后序  怎么将先序转换成后序
    }
    

    相关文章

      网友评论

          本文标题:A1043 Is It a Binary Search Tre

          本文链接:https://www.haomeiwen.com/subject/hdlwsxtx.html