leetcode 297 二叉树的序列化与反序列化

119 阅读1分钟

1. DFS(递归)

根据根节点、左节点和右节点之间的相对顺序,可以进一步将深度优先搜索策略区分为: 先序遍历 中序遍历 后序遍历

序列化:将一个数据结构或者对象转换为连续的比特位的操作 反序列化:将连续的比特位转换为树结点

序列化: 先序遍历 如果树节点为空,则str += "null,"; 否则str+=String.valueOf(root.val); 递归左子树 递归右子树

反序列化:字符串根据逗号划分为字符串数组,再转换为list结构。 如果读取到的元素equals("null“),return 否则新建树节点 树节点的左子树为 树节点的右子树为

2. BFS 层序遍历

序列化: 维护一个队列,先入根节点 考虑出列节点,如果出列节点为空,则将“null”推入res数组 否则,将节点制推入数组,并将此节点的左右节点入队

反序列化:先转换为list数组,维护一个队列,根节点入队。 出队一个节点,当前节点的左右节点即为数组中下一个元素和下下个元素, 将这两个元素入队