题解 | #序列化二叉树#

序列化二叉树

http://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

import java.util.*;
public class Solution {
    String Serialize(TreeNode root) {
        if(root == null) return "#"; // 对所有的空节点也要存储占位符号"#"
        return root.val + "," + Serialize(root.left) + "," + Serialize(root.right);    // 递归前序遍历返回字符串
    }
    TreeNode Deserialize(String str) {
        String[] s = str.split(",");                             // 切分字符串
        Queue<String> queue = new LinkedList<String>();
        for(String s1 : s){
            queue.offer(s1);
        }
        return de(queue);
    }
    TreeNode de(Queue<String> queue) {
        String s = queue.poll();                                // 递归函数每次从队首读出一个元素,因此读出的顺序也是前序
        if(s.equals("#")) return null;                          // 对递归推出条件之一进行处理
        TreeNode head = new TreeNode(Integer.valueOf(s));       // 前序首先建立一个节点
        head.left = de(queue);                                  // 然后递归左右子节点
        head.right = de(queue);
        return head;
    }
}
全部评论

相关推荐

05-10 16:48
门头沟学院 Java
程序员小白条:主要原因,投递太晚了,快手应该早点溜了,你都从去年9月开始的,半年也差不多3月跑路了,这样的话,至少有5个以上的面试机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务