题解 | #序列化二叉树#

序列化二叉树

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 null;
        }
        Queue<TreeNode> queue=new LinkedList<>();
        String res="";
        queue.add(root);
        TreeNode cur=null;
        String empty="";
        while(!queue.isEmpty()){
            
            cur=queue.poll();
            if(cur==null){
                empty=empty+"#";
            }else{
                res=res+empty+String.valueOf(cur.val)+"_";
                empty="";
                queue.add(cur.left);
                queue.add(cur.right);
            }

        }
        //System.out.println(res);
        return res;
    }
    TreeNode Deserialize(String str) {
        if(str==null){
            return null;
        }
        int n=str.length();
         Queue<Integer> queue=new LinkedList<>();
         Integer num=0;
        //TreeNode root=;
        for(int i=0;i<n;i++){
            if(str.charAt(i)=='_'){
                queue.add(num);
                num=0;
            }else if(str.charAt(i)=='#'){
                queue.add(null);
            }else{
                num=num*10+str.charAt(i)-'0';
            }
            
        }
        Queue<TreeNode> trees=new LinkedList<>();
        TreeNode root=new TreeNode(queue.poll());
        TreeNode cur= null;
       
       trees.add(root);
        while(!queue.isEmpty()){
            cur=trees.poll();


            num=queue.poll();
            if(num!=null){
                TreeNode left=new TreeNode(num);
                cur.left=left;
                trees.add(left);
            }
            if(!queue.isEmpty()){
                num=queue.poll();
                if(num!=null){
                    TreeNode right=new TreeNode(num);
                    cur.right=right;
                    trees.add(right);
                }
            }
            
        }
       return root;
    }
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务