剑指offer--序列化二叉树
2015-04-18 14:27
429 查看
题目描述
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.ArrayList; public class Solution { String Serialize(TreeNode root) { if(root==null) return ""; StringBuilder sb = new StringBuilder(); ArrayList<TreeNode> queue = new ArrayList<TreeNode>(); ArrayList<String> result = new ArrayList<String>(); queue.add(root); result.add(root.val+""); int low = 0; int high = 1; while(low<high){ TreeNode t = queue.get(low); if(t.left!=null){ result.add(t.left.val+""); queue.add(t.left); high++; }else{ result.add("#"); } if(t.right!=null){ result.add(t.right.val+""); queue.add(t.right); high++; }else{ result.add("#"); } low++; } int i; for(i=result.size()-1;i<result.size();i--){ if(!result.get(i).endsWith("#")) break; } for(int j=0;j<=i;j++){ sb.append(result.get(j)).append(","); } return sb.deleteCharAt(sb.length()-1).toString(); } TreeNode Deserialize(String str) { if(str.length()==0) return null; String[] chars = str.split(","); ArrayList<TreeNode> queue = new ArrayList<TreeNode>(); TreeNode t = new TreeNode(Integer.valueOf(chars[0])); queue.add(t); int low = 0; for(int i=0;i<chars.length && low<queue.size();){ t = queue.get(low); if(i+1<chars.length){ i++; TreeNode left = null; if(!("#".equals(chars[i]))){ left = new TreeNode(Integer.valueOf(chars[i])); queue.add(left); } t.left = left; } if(i+1<chars.length){ i++; TreeNode right = null; if(!"#".equals(chars[i])){ right = new TreeNode(Integer.valueOf(chars[i])); queue.add(right); } t.right = right; } low++; } return queue.get(0); } }
请实现两个函数,分别用来序列化和反序列化二叉树
相关文章推荐
- 剑指offer56--二叉树的序列化和反序列化
- 剑指offer——面试题62:序列化二叉树
- (C++)剑指offer-61:序列化二叉树(树)(再理解)
- 【剑指Offer】面试题62:序列化二叉树
- 【剑指offer】题61:二叉树序列化、反序列化
- 【剑指offer-解题系列(62)】序列化二叉树
- 【剑指offer】面试题37:序列化二叉树
- 剑指offer-二叉树的序列化和反序列化(困惑)-Java
- 剑指offer-序列化二叉树
- 剑指offer——面试题62:序列化二叉树
- 剑指offer 编程题(58):序列化二叉树
- 剑指offer——序列化二叉树___
- 剑指Offer——序列化二叉树
- 剑指offer:序列化二叉树
- 剑指offer--序列化二叉树
- 剑指Offer面试题62:序列化二叉树
- 【剑指offer】第三十六题(二叉搜索树与双向链表) 和 第三十七题(序列化二叉树)
- 剑指offer-序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 剑指offer 面试题62 序列化和反序列化二叉树