美文网首页
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