면접 문제 7 - 두 갈래 나무 재구축
제목 요구
두 갈래 트리의 전차 역과 중차 역행 결과를 입력하고 두 갈래 트리를 재구성합니다. 전차와 중차 역행에 중복된 숫자가 포함되지 않는다고 가정합니다. 예를 들어 입력한 전차 역행 서열 {1,2,4,7,3,5,6,8}과 중차 역행 서열 {4,7,2,1,5,3,8,6}를 재구성합니다.
제목 해석
사고방식1:
선서와 중서를 분석하고 선서: 1,2,4,7,3,5,6,8 중서: 4,7,2,1,5,3,8,6은 위의 선서 서열을 통해 루트 노드의 값이 1이라는 것을 확정할 수 있다. 중서 서열을 통해 우리는 4,7,2는 왼쪽 트리에 속하고 5, 3, 8, 6은 오른쪽 트리에 속하는 것과 같은 방법으로 우리는 좌우 트리를 하나의 전체로 삼아 점차적으로 구성할 수 있다.
public static BinaryTreeNode constructCore(int[] preOrder , int[] inOrder) throws Exception {
if(preOrder == null || inOrder == null) {
return null ;
}
if(preOrder.length != inOrder.length) {
throw new Exception(" , ") ;
}
BinaryTreeNode root = new BinaryTreeNode() ;
for(int i = 0 ; i < preOrder.length ; i++) {
if(inOrder[i] == preOrder[0]) {
root.data = inOrder[i] ;
System.out.println(root.getData());
root.left = constructCore(Arrays.copyOfRange(preOrder, 1, 1+i) ,
Arrays.copyOfRange(inOrder, 0, i)) ;
root.right = constructCore(Arrays.copyOfRange(preOrder, i+1, preOrder.length) ,
Arrays.copyOfRange(inOrder, i, inOrder.length)) ;
}
}
return root ;
}
테스트 코드
public static void main(String[] args) {
int[] preOrder = {1,2,4,7,3,5,6,8} ;
int[] inOrder = {4,7,2,1,5,3,8,6} ;
try {
BinaryTreeNode root = constructCore(preOrder, inOrder) ;
} catch (Exception e) {
e.printStackTrace();
}
}
실행 결과
테스트 결과 없음
전체 소스 스탬프 소스 주소 보기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.