题解 | 二叉搜索树的后序遍历序列

写的有点长了。主要想注意这里要注意由于判断空树为false,所以必须就要另建一个函数来做递归

import java.util.*;
public class Solution {
    public boolean VerifyOrder(int [] sequence) {
        int len = sequence.length;
        int root = 0;
        if (len != 0)
            root = sequence[len - 1];
        if(len < 1)
            return true;
        int cont1 = 0;
        int cont2 = 0;
        for (int i = 0; i < len-1; i++) {
            if (sequence[cont1] < root) {
                cont1++;
            } else {
                break;
            }
        }
        if(cont1==len-1){
            boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1));
            return left;
        }
        for (int i = cont1; i < len; i++) {
            if (sequence[i] > root) {
                cont2++;
            } else {
                break;
            }
        }
        if (cont1 + cont2 < len - 1) {
            return false;
        } else {
            boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1));
            boolean right = VerifyOrder(Arrays.copyOfRange(sequence,cont1, len-1));
            return (left & right);
        }

   }
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length == 0){
            return false;
        }       
        return VerifyOrder(sequence);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务