题解 | #序列化二叉树#

序列化二叉树

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 {
    TreeNode nullNode = new TreeNode(-1);
    String Serialize(TreeNode root) {
        if(root == null){
            return "";
        }
        StringBuilder sb = new StringBuilder();
        Deque<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            root = queue.poll();
            sb.append(root.val+"!");
            if(root!=nullNode){
                if(root.left!=null){
                    queue.add(root.left);
                }else{
                    queue.add(nullNode);
                }
                if(root.right!=null){
                    queue.add(root.right);
                }else{
                    queue.add(nullNode);
                }
            }
        }
        return sb.toString();
    }
    TreeNode Deserialize(String str) {
        if("".equals(str)){
            return null;
        }
        String[] vals = str.split("!");
        TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
        Deque<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        for(int i = 1; i < vals.length; i+=2){
            TreeNode node = queue.poll();
            int left = Integer.parseInt(vals[i]);
            int right = Integer.parseInt(vals[i+1]);
            if(left!=-1){
                node.left = new TreeNode(left);
                queue.add(node.left);
            }
            if(right!=-1){
                node.right = new TreeNode(right);
                queue.add(node.right);
            }
        }
        return root;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务