LeetCode 297번째: 두 갈래 나무의 서열화와 반서열화(앞의 서열 반복)
Java 코드:
import java.util.LinkedList;
import java.util.Queue;
public class Codec {
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
if (root == null) {
return "";
}
StringBuilder stringBuilder = new StringBuilder();
dfs(root, stringBuilder);
return stringBuilder.toString();
}
private void dfs(TreeNode node, StringBuilder stringBuilder) {
if (node == null) {
stringBuilder.append("#").append(",");
return;
}
stringBuilder.append(node.val).append(",");
dfs(node.left, stringBuilder);
dfs(node.right, stringBuilder);
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
//
if (data.length() == 0) {
return null;
}
// , "" , [""]
String[] split = data.split(",");
Queue queue = new LinkedList<>();
for (String str : split) {
queue.offer(str);
}
return dfs(queue);
}
private TreeNode dfs(Queue queue) {
if (queue.isEmpty()) {
return null;
}
String head = queue.poll();
if ("#".equals(head)) {
return null;
}
TreeNode root = new TreeNode(Integer.parseInt(head));
root.left = dfs(queue);
root.right = dfs(queue);
return root;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.