由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求个java版本的binary tree serialization和deserialization
相关主题
如何 serialization 和deserialization hash table ?serialize n-ary tree 一问
发几个面试题请教一下超大图的存储问题
一个树,不一定是2叉树,让设计一个数据结构来serialize和 deserialize贡献最近面的T家电面一题,顺便求个bless
F家phone interview的一道题谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?
问一道算法题yahoo onsite
刚拿到A公司的offer,呈上面经Deserialize in-order array to a minimum height binary tree.
弱弱的问关于二叉树的问题谷歌面经
A家面经, offer, 请教NegotiationGoogle第二次电面
相关话题的讨论汇总
话题: node话题: null话题: file话题: tmp话题: string
进入JobHunting版参与讨论
1 (共1页)
h****p
发帖数: 87
1
RT
多谢大家
d********i
发帖数: 582
2
同求
l*****a
发帖数: 14598
3
抛砖引玉
苯法:use preOrder/InOrder
好点的:store the BT in level order,use '#' as null node
然后按照这个规律重新生成BT.
不知还有什么办法

【在 h****p 的大作中提到】
: RT
: 多谢大家

J*****a
发帖数: 4262
4
这是linkedin第一轮电面的一位国人大哥给我的“warm-up”题,首先是序列化
我写成了tree类的成员函数,所以没有把root当成方法的参数
public void serialize(){
File file = new File("test.txt");
if(root == null) return;
FileWriter fw = null;
try{
fw = new FileWriter(file);
BufferedWriter bf = new BufferedWriter(fw);
Queue q = new LinkedList();
q.add(root);
while(!q.isEmpty()){
Node cur = q.poll();
if(cur == null) bf.write("# ");
else{
bf.write(cur.data + " ");
if(cur.left == null) q.add(null);
else q.add(cur.left);
if(cur.right == null) q.add(null);
else q.add(cur.right);
}
}
bf.flush();
bf.close();
}
catch(Exception e){}
}
J*****a
发帖数: 4262
5
下面是反序列化
public static Node deserialize(String filename){
Node root = null;
File file = new File(filename);
try{
Scanner scanner = new Scanner(file);
if(scanner.hasNext()) {
String tmp = scanner.next();
if(tmp.equals("#")) {scanner.close();return null;}
else {
Node node = new Node(Integer.parseInt(tmp));
root = node;
}
}
else {scanner.close(); return null;}
Queue q = new LinkedList();
q.add(root);
while(!q.isEmpty()){
Node cur = q.poll();
Node left = null;
Node right = null;
if(scanner.hasNext()){
String tmp = scanner.next();
if(!tmp.equals("#")){
left = new Node(Integer.parseInt(tmp));
q.add(left);
}
}
if(scanner.hasNext()){
String tmp = scanner.next();
if(!tmp.equals("#")){
right = new Node(Integer.parseInt(tmp));
q.add(right);
}
}
cur.left = left;
cur.right = right;
}
scanner.close();
}catch(Exception e){}
return root;
}
d********i
发帖数: 582
6

谢谢你!!

【在 J*****a 的大作中提到】
: 下面是反序列化
: public static Node deserialize(String filename){
: Node root = null;
: File file = new File(filename);
: try{
: Scanner scanner = new Scanner(file);
: if(scanner.hasNext()) {
: String tmp = scanner.next();
: if(tmp.equals("#")) {scanner.close();return null;}
: else {

m***p
发帖数: 86
7
我的g家第二次电面也是这个问题, 只要把null存储的话(比如用#),那么只需要
preorder一下就可以了, 我当时用level order, 其实没有必要
l********1
发帖数: 24
8
http://leetcode.com/2010/09/serializationdeserialization-of-bin
这个不是leetcode原题么。。。。。。
1 (共1页)
进入JobHunting版参与讨论
相关主题
Google第二次电面问一道算法题
问道Binary tree serialization/de-serialization的题刚拿到A公司的offer,呈上面经
How to serialize and deserialize弱弱的问关于二叉树的问题
面经+求助A家面经, offer, 请教Negotiation
如何 serialization 和deserialization hash table ?serialize n-ary tree 一问
发几个面试题请教一下超大图的存储问题
一个树,不一定是2叉树,让设计一个数据结构来serialize和 deserialize贡献最近面的T家电面一题,顺便求个bless
F家phone interview的一道题谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?
相关话题的讨论汇总
话题: node话题: null话题: file话题: tmp话题: string