小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:二叉树
数据结构类算法总结:二叉树
1.题目描述:
请实现两个函数,分别用来序列化和反序列化二叉树
2.代码实现:
public class Solution37 { private static class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } //序列化 String Serialize(TreeNode root) { if(root == null) return ""; StringBuilder sb = new StringBuilder(); Serialize2(root, sb); return sb.toString(); } void Serialize2(TreeNode root, StringBuilder sb) { if(root == null) {//空结点 sb.append("#,"); return; } sb.append(root.val); sb.append(','); Serialize2(root.left, sb);//递归添加左子树结点,遇到空结点添加#并返回 Serialize2(root.right, sb);//递归添加右子树结点 } int index = -1; //反序列化 TreeNode Deserialize(String str) { if(str.length() == 0) return null; String[] strs = str.split(","); return Deserialize2(strs); } TreeNode Deserialize2(String[] strs) { index++; if(!strs[index].equals("#")) { TreeNode root = new TreeNode(0); root.val = Integer.parseInt(strs[index]); root.left = Deserialize2(strs); root.right = Deserialize2(strs); return root; } return null; } }