검지offer 시리즈: 두 갈래 검색 트리의 뒷순서 반복 시퀀스

묘사


정수 그룹을 입력하여 이 그룹이 어떤 두 갈래 검색 트리의 후순으로 옮겨다니는 결과인지 판단하십시오.예이면 Yes를 내보내고 그렇지 않으면 No를 내보냅니다.입력한 그룹의 임의의 두 숫자가 서로 다르다고 가정하십시오.

코드

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0){
            return false;
        }
        int i = sequence.length-1;
        return judge(sequence,0,i);
        
    }
    
    boolean judge(int[] arr,int left,int right){
        if(left>=right){
            return true;
        }
        int root = arr[right];
        int i = left;
        while(arr[i]<root){
            i++;
        }
        int j = i;
        while(j<right){
            if(arr[j]<root){
                return false;
            }
            j++;
        }
       return judge(arr,0,i-1)&&judge(arr,i,j-1);
    }
}

소감


두 갈래 나무의 후속은 좌우 뿌리를 두루 훑어보기 때문에 뒤에서 앞으로 차례대로 뿌리 오른쪽 나무 왼쪽 나무는 왼쪽 나무가 모두 뿌리보다 작고 오른쪽 나무가 모두 뿌리보다 크며 하위 나무도 위의 요구에 부합한다는 것을 검증해야 한다.

좋은 웹페이지 즐겨찾기