검지offer 면접문제 5 - 끝에서 끝까지 인쇄 체인표/6 - 두 갈래 나무 재구성
단일 체인 테이블에 대해 이미 그의 머리 결점을 알고 있으며, 끝에서 끝까지 안의 내용을 인쇄할 것을 요구한다.
생각:
손에 머리가 있으니 끝에서 끝까지 인쇄하려면 먼저 창고가 생각난다.
창고를 생각하니 정말 실현해야 한다. 더욱 공교로운 방법이 하나 있다. 같은 창고--귀속이다.
public static void printLinkedListFromTail(Node node) {
if (node != null) {
printLinkedListFromTail(node.next);
System.out.println(node);
}
}
class Node {
Node next;
int value;
@Override
public String toString() {
return "Node [value=" + value + "]";
}
}
제목 6:
어떤 두 갈래 나무의 앞차례 역주행과 중간차례 역주행 결과를 입력하십시오. 이 두 갈래 나무는 입력한 앞차례 역주행과 중간차례 역주행 결과에 중복된 숫자가 포함되지 않는다고 가정하십시오.예를 들어 앞 순서 반복 시퀀스 {1, 2, 4, 7, 3, 5, 6, 8}와 중간 순서 반복 시퀀스 {4, 7, 2, 1, 5, 3, 8, 6}를 입력하면 두 갈래 나무를 재건하고 그의 머리 결점을 출력합니다
class BinaryTreeNode{
int value;
BinaryTreeNode left;
BinaryTreeNode right;
}
생각은 어떻게 하는가:
우선 앞의 순서가 두루 돌아다니는 것을 알아야 한다.
1. 그러면 앞의 첫 번째 숫자는 루트 노드가 틀림없다.
2. 이 뿌리 노드에 따라 중간 순서로 안쪽을 훑어보고 위치를 찾으면 이 노드 이전의 것은 모두 뿌리 왼쪽에 있고 그 다음은 모두 뿌리 오른쪽에 있다.
3. 그리고 작은 덩어리로 돌아가 각개 격파
class BinaryTreeNode {
int value;
BinaryTreeNode left;
BinaryTreeNode right;
@Override
public String toString() {
return "BinaryTreeNode [value=" + value + ", left=" + left
+ ", right=" + right + "]";
}
}
public BinaryTreeNode refactorTree(int[] first, int[] middle) {
if (first == null || middle == null || first.length != middle.length) {
throw new RuntimeException();
}
if (first.length == 0) {
return null;
}
// , ,
int root = first[0];
int rootIndex = 0;
for (int i = 0; i < first.length; i++) {
if (middle[i] == root) {
rootIndex = i;
break;
}
}
BinaryTreeNode tree = new BinaryTreeNode();
tree.value = root;
// , ,
tree.left = refactorTree(Arrays.copyOfRange(first, 1, rootIndex + 1),
Arrays.copyOfRange(middle, 0, rootIndex));
// ,
tree.right = refactorTree(
Arrays.copyOfRange(first, rootIndex + 1, first.length),
Arrays.copyOfRange(middle, rootIndex + 1, middle.length));
return tree;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 백엔드에서 데이터를 트리로 변환하고 맵은 json 트리를 생성하여 백엔드로 되돌려줍니다. (백엔드 변환)java 백엔드, 데이터를 트리로 변환하고,map는 json 트리를 생성하여 전방으로 되돌려줍니다(백엔드 변환) 1. 왜 이런 블로그를 쓰나요? 2.java 백엔드 코드 3. 전환된 데이터는 다음과 유사한 형식으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.