题解 | #序列化二叉树#

序列化二叉树

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

import java.util.*;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    String Serialize(TreeNode root) {  //将二叉树序列化为字符串
        if(root == null)
        return "";
        StringBuilder str = new StringBuilder();
        int INF = 1000000;
        TreeNode emptyNode = new TreeNode(INF);
        TreeNode temp = null;
        // boolean bool;
        if(root != null){     
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            while(!queue.isEmpty()){
            temp = queue.poll();
            if(temp.equals(emptyNode)){
                str.append("#").append(",");  
            }else{
                str.append(Integer.toString(temp.val)).append(",");
                if(!(temp.left == null && temp.right == null&&queue.isEmpty())){
                queue.offer(temp.left==null?emptyNode:temp.left);
                queue.offer(temp.right==null?emptyNode:temp.right);
            }
            }
            

        }
        }

        return str.toString();

    }
    TreeNode Deserialize(String str) { //将字符串反序列化为二叉树
        if(str.length() == 0)
        return null;
        String[] string = str.split(",");
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        TreeNode temp = new TreeNode(Integer.parseInt(string[0]));
        TreeNode head = temp;
        queue.offer(temp);
        for(int i = 1 ; i < string.length; i=i+2){
            temp = queue.poll();
            if(!string[i].equals("#")){
                temp.left = new TreeNode(Integer.parseInt(string[i]));
                queue.offer(temp.left); 
            }else{
                temp.left = null;
            }
            if(!string[i+1].equals("#")){
                temp.right = new TreeNode(Integer.parseInt(string[i+1]));
                queue.offer(temp.right);
            }else{
                temp.right = null;
            }

        }
        return head;
    }
}

全部评论

相关推荐

2025-12-17 17:53
门头沟学院 Web前端
海梨花:我之前面试也是问我非技术问题,问过我怎么统计北京出租车数量,不借助任何网络或者其他平台的帮助,有足够多的人可以帮忙
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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