问题解决
请实现两个函数,分别用来序列化和反序列化二叉树。
示例:
你可以将以下二叉树:
1
/ \
2 3
/ \
4 5
序列化为 "[1,2,3,null,null,4,5]"
问题解决
使用BFS解决
public class Codec {
public String serialize(TreeNode root) {
if(root == null) return "[]";
StringBuilder sb = new StringBuilder();
Queue<TreeNode> deque = new LinkedList<>();
sb.append('[');
deque.add(root);
while(!deque.isEmpty()) {
TreeNode cur = deque.remove();
if(cur != null) {
deque.add(cur.left);
deque.add(cur.right);
sb.append(String.valueOf(cur.val) + ',');
} else {
sb.append("null,");
}
}
sb.deleteCharAt(sb.length() - 1);
sb.append(']');
return sb.toString();
}
public TreeNode deserialize(String data) {
if(data.equals("[]")) return null;
String[] strs = data.substring(1, data.length() - 1).split(",");
Queue<TreeNode> deque = new LinkedList<>();
TreeNode root = new TreeNode(Integer.parseInt(strs[0]));
deque.add(root);
int i = 1;
while(!deque.isEmpty()) {
TreeNode cur = deque.remove();
if(!strs[i].equals("null")) {
cur.left = new TreeNode(Integer.parseInt(strs[i]));
deque.add(cur.left);
}
i++;
if(!strs[i].equals("null")) {
cur.right = new TreeNode(Integer.parseInt(strs[i]));
deque.add(cur.right);
}
i++;
}
return root;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。