검지offer_정수 그룹을 입력하여 이 그룹이 어떤 두 갈래 검색 트리의 뒤서열을 훑어보는 결과인지 판단하십시오...
정수 그룹을 입력하여 이 그룹이 두 갈래 검색 트리의 뒷순서가 두루 흐르는 결과인지 판단합니다.예일 경우 출력 Yes, 그렇지 않으면 출력 No.입력한 그룹의 임의의 두 숫자가 서로 다르다고 가정하십시오.
앞서 소닌 필기시험에서 이 문제를 만났는데 당시 두 갈래 검색 트리는 모두 만 두 갈래 나무라고 생각했기 때문에 귀속 과정에서 수조에 대한 구분은 만 두 갈래 나무의 특성으로 구분되었다.큰 실수, 큰 실수!
본고는 귀속 사상을 이용하여 뿌리 노드의 왼쪽 나무 원소가 뿌리 노드보다 작고 오른쪽 나무 원소가 뿌리 노드보다 큰지 판단하는 것이다.좌우 트리에 대한 구분에 중점을 두다.
1. 0위부터 루트 노드보다 큰 원소를 찾아 이 위치 i를 기록한다.이 위치에 있기 전에 모두 왼쪽 트리에 속한다. (이 때 왼쪽 트리가 뿌리 노드보다 작다고 단정되었다.) 2.오른쪽 트리가 모두 노드보다 큰지 확인하기 (i위부터 루트 노드 앞까지) 3.좌우 자수가 모두 두 갈래 수색수에 속하는지 판단한다.
코드는 다음과 같습니다.
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence==null||sequence.length==0){
return false;
}
boolean res =getRes(sequence,0,sequence.length-1);
return res;
}
public boolean getRes(int[] s,int start,int end){
int j=0;
int i=0;
if(end-start<=1){
return true;
}
for( i=start;iif(s[i]>s[end]){
break;
}
}
for(j=i;jif(s[j]return false;
}
}
boolean left=true;
boolean right=true;
if(i>0){
left = getRes(s,start,i-1);
}
if(i1){
right=getRes(s,i,end-1);
}
return left&&right;
}
}
다음으로 전송:https://www.cnblogs.com/lingongheng/p/6444229.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.