一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1125|回复: 7
收起左侧

[算法题] 谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?

[复制链接] |试试Instant~ |关注本帖
discoveryi 发表于 2014-3-14 08:13:39 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 discoveryi 于 2014-4-14 00:26 编辑

题目: http://leetcode.com/2010/09/serializationdeserialization-of-binary.html

请大侠给个java版本的完整代码, Google上找不到。。谢谢了。


 楼主| discoveryi 发表于 2014-3-25 14:49:30 | 显示全部楼层
顶。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

cqx83 发表于 2014-4-13 12:10:37 | 显示全部楼层
你这么写isNumber不是false才怪。。。
回复 支持 反对

使用道具 举报

 楼主| discoveryi 发表于 2014-4-13 12:55:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

cqx83 发表于 2014-4-13 13:34:35 | 显示全部楼层
isNumber和token都是传值进去的,当然不会变了,建议lz还是把Java基础好好看看吧,感觉lz连Java和C++的不同点都不太清楚的样子。。只是把leetcode上的解法生搬硬套下来没什么意义。至于这整个函数本身我也没写过,所以不好评价
回复 支持 反对

使用道具 举报

 楼主| discoveryi 发表于 2014-4-14 00:26:11 | 显示全部楼层
cqx83 发表于 2014-4-13 13:34
isNumber和token都是传值进去的,当然不会变了,建议lz还是把Java基础好好看看吧,感觉lz连Java和C++的不同 ...

。。。。我汗。
我都懂啊,我是说我没时间去写完code。
回复 支持 反对

使用道具 举报

cqx83 发表于 2014-4-14 01:01:04 | 显示全部楼层
discoveryi 发表于 2014-4-13 08:26
。。。。我汗。
我都懂啊,我是说我没时间去写完code。

那你的时间都去哪儿了。。
回复 支持 反对

使用道具 举报

iYxAc 发表于 2015-8-16 22:27:12 | 显示全部楼层
  1. /**
  2. * Definition of TreeNode:
  3. * public class TreeNode {
  4. *     public int val;
  5. *     public TreeNode left, right;
  6. *     public TreeNode(int val) {
  7. *         this.val = val;
  8. *         this.left = this.right = null;
  9. *     }
  10. * }
  11. */
  12. class Solution {
  13.     /**
  14.      * This method will be invoked first, you should design your own algorithm
  15.      * to serialize a binary tree which denote by a root node to a string which
  16.      * can be easily deserialized by your own "deserialize" method later.
  17.      */
  18.     public String serialize(TreeNode root) {
  19.         String result = "";
  20.         if (root == null) {
  21.             return result += "#,";
  22.         }
  23.         
  24.         result += root.val;
  25.         result += ",";
  26.         
  27.         result += serialize(root.left);
  28.         result += serialize(root.right);
  29.       
  30.         return result;
  31.     }
  32.    
  33.     /**
  34.      * This method will be invoked second, the argument data is what exactly
  35.      * you serialized at method "serialize", that means the data is not given by
  36.      * system, it's given by your own serialize method. So the format of data is
  37.      * designed by yourself, and deserialize it here as you serialize it in
  38.      * "serialize" method.
  39.      */
  40.     public TreeNode deserialize(String data) {
  41.         // 转成字符串,好处理一些
  42.         String[] strList = data.split(",");
  43.         ArrayList<String> nodeList = new ArrayList<String>(strList.length);
  44.         for (String str : strList) {
  45.             nodeList.add(str);
  46.         }

  47.         TreeNode root = deserializeHelper(nodeList);
  48.         return root;
  49.     }
  50.    
  51.     private TreeNode deserializeHelper(ArrayList<String> nodeList) {
  52.         if (nodeList == null || nodeList.size() == 0) {
  53.             return null;
  54.         }
  55.         String val = nodeList.get(0);
  56.         nodeList.remove(0);
  57.         if (val.equals("#")) {
  58.             return null;
  59.         }
  60.         TreeNode root = new TreeNode(Integer.parseInt(val));
  61.         root.left = deserializeHelper(nodeList);
  62.         root.right = deserializeHelper(nodeList);
  63.         return root;
  64.     }
  65. }
复制代码
我贴个lintcode的,FYI
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 13:02

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表