问题解决
请实现两个函数,分别用来序列化和反序列化二叉树。
示例:
你可以将以下二叉树:
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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这篇博客介绍了如何使用广度优先搜索(BFS)方法来序列化和反序列化二叉树。提供的Java代码示例展示了如何将二叉树转化为字符串序列 `[1,2,3,null,null,4,5]`,并能从该序列还原回原始二叉树结构。此方法对于存储和传输二叉树数据非常有用。
285

被折叠的 条评论
为什么被折叠?



