LeetCode: 두 갈래 나무를 정하고 이 두 갈래 나무가 밑바닥에서 꼭대기까지의 층계를 훑어보도록 되돌려줍니다.
제목 설명
두 갈래 나무를 정해서 이 두 갈래 나무가 밑바닥에서 꼭대기까지의 층계를 훑어보낸다. (왼쪽에서 오른쪽으로, 잎 노드에서 뿌리 노드까지, 층층이 훑어보낸다)
예:
주어진 두 갈래 나무는 {3,9,20,#,#,15,7},
3↵ / ↵ 9 20↵ / ↵ 15 7
이 두 갈래 나무가 밑바닥에서 꼭대기까지 층층이 훑어본 결과는
[↵ [15,7]↵ [9,20],↵ [3],↵]
"{1,#,2,3}"의 의미를 잘 모르면 계속 읽어주세요
OJ는 다음과 같은 방법으로 두 갈래 트리를 정렬합니다.
두 갈래 나무의 서열화는 층층이 훑어보는 원칙에 따른다. # "이 위치는 하나의 경로의 종결이고 아래에 결점이 더 이상 존재하지 않는다는 것을 대표한다.
예:
1↵ / ↵ 2 3↵ /↵ 4↵ ↵ 5
상술한 두 갈래 나무의 서열화 결과는'{1,2,3,#,#,4,#,#,5}'이다.
방법1: 층차적으로 훑어보고 결과 집합에 대해 플러그인 조작을 사용한다
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
ArrayList> res = new ArrayList>();
public ArrayList> levelOrderBottom(TreeNode root) {
if(root == null)
return res;
Queue queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
ArrayList list = new ArrayList();
for(int i = 0; i < size; i++){
TreeNode node = queue.poll();
list.add(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
res.add(0, list);
}
return res;
}
}
방법2: 귀속을 이용하여 층차 역행을 실현한다
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
ArrayList> res = new ArrayList>();
public ArrayList> levelOrderBottom(TreeNode root) {
if(root == null)
return res;
Queue queue = new LinkedList<>();
queue.offer(root);
levelOrderBottom(queue);
return res;
}
public void levelOrderBottom(Queue queue){
if(queue.isEmpty())
return;
int size = queue.size();
ArrayList list = new ArrayList();
for(int i = 0; i < size; i++){
TreeNode node = (TreeNode)queue.poll();
list.add(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
levelOrderBottom(queue);
res.add(list);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.