序列化二叉树

本贴最后更新于 2713 天前,其中的信息可能已经东海扬尘

题目描述

请实现两个函数,分别用来序列化和反序列化二叉树。

序列化:遍历二叉树为字符串。

反序列化:依据字符串构造二叉树。

解题思路

依据前序遍历来序列化二叉树,如果是 null 指针,则转为特殊字符“#”。这样字符串中包含了所有结点和每个叶子结点下的空节点。

反序列化根据前序遍历,遇到特殊字符“#”就返回 Null。

代码

public class Solution { private StringBuilder sb = new StringBuilder(); private int index = -1; String Serialize(TreeNode root) { if(root == null){ sb.append("#,"); return sb.toString(); } sb.append(root.val + ","); Serialize(root.left); Serialize(root.right); return sb.toString(); } TreeNode Deserialize(String str) { index++; String[] strr = str.split(","); TreeNode node = null; if(!strr[index].equals("#")){ node = new TreeNode(Integer.valueOf(strr[index])); node.left = Deserialize(str); node.right = Deserialize(str); } return node; } }

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...