LeetCode 검지 Offer 07.두 갈래 나무를 재건하다
6646 단어 Leet Code 제목.
제목
두 갈래 나무의 앞 순서와 중간 순서의 결과를 입력하십시오. 이 두 갈래 나무를 다시 만드십시오.입력한 앞 순서와 중간 순서의 결과에 중복된 숫자가 없다고 가정하십시오.링크
생각
맵은 노드의 아래 표지판을 기록하여 다음 순서가 루트 노드를 통해 노드의 위치를 정할 수 있도록 합니다./**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
Map<Integer, Integer> map = new HashMap<>();
int[] preorder;
int[] inorder;
public TreeNode buildTree(int[] preorder, int[] inorder) {
for(int i = 0; i < inorder.length; i++){
map.put(inorder[i], i);
}
this.preorder = preorder;
this.inorder = inorder;
return buildTree(0, 0, inorder.length - 1);
}
TreeNode buildTree(int preIdx, int inLeft, int inRight){
if(inLeft > inRight)return null;
TreeNode root = new TreeNode(preorder[preIdx]);
int inRootIdx = map.get(preorder[preIdx]);
//preIdx
root.left = buildTree(preIdx + 1, inLeft, inRootIdx - 1);
// , inRootIdx - inLeft
// preIdx+(1+inRootIdx-inLeft)
root.right = buildTree(preIdx + 1 + inRootIdx - inLeft, inRootIdx + 1, inRight);
return root;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 제목 - 체인 테이블 반전(python 구현)
단일 체인 테이블을 반전합니다.
예:
진급: 체인 시계를 교체하거나 귀속적으로 반전할 수 있습니다.너는 두 가지 방법으로 이 문제를 해결할 수 있니?
python 코드 구현 L:
방법 2:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
맵은 노드의 아래 표지판을 기록하여 다음 순서가 루트 노드를 통해 노드의 위치를 정할 수 있도록 합니다.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
Map<Integer, Integer> map = new HashMap<>();
int[] preorder;
int[] inorder;
public TreeNode buildTree(int[] preorder, int[] inorder) {
for(int i = 0; i < inorder.length; i++){
map.put(inorder[i], i);
}
this.preorder = preorder;
this.inorder = inorder;
return buildTree(0, 0, inorder.length - 1);
}
TreeNode buildTree(int preIdx, int inLeft, int inRight){
if(inLeft > inRight)return null;
TreeNode root = new TreeNode(preorder[preIdx]);
int inRootIdx = map.get(preorder[preIdx]);
//preIdx
root.left = buildTree(preIdx + 1, inLeft, inRootIdx - 1);
// , inRootIdx - inLeft
// preIdx+(1+inRootIdx-inLeft)
root.right = buildTree(preIdx + 1 + inRootIdx - inLeft, inRootIdx + 1, inRight);
return root;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 제목 - 체인 테이블 반전(python 구현)단일 체인 테이블을 반전합니다. 예: 진급: 체인 시계를 교체하거나 귀속적으로 반전할 수 있습니다.너는 두 가지 방법으로 이 문제를 해결할 수 있니? python 코드 구현 L: 방법 2:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.