leetcode 二叉树的序列化和反序列化(297)

leetcode给的二叉树形式
leetcode官方关于二叉树的解释
例如:

[5, 4, 7, 3, null, 2, null, -1, null, 9]

      5
     / \
    4   7
   /   /
  3   2
 /   /
-1  9

在做二叉树的题目,有时出问题需要自己调试,这时候就要自己建树

  1. bfs
public class BinaryTreeCodes {
    
    
    // Encodes a tree to a single string.
    public String serialize(TreeNode root) {
    
    
        if(root == null){
    
    
            return "";
        }
        StringBuilder res = new StringBuilder();
        res.append("[");
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
    
    
            TreeNode node = queue.poll();
            if(node != null){
    
    
                res.append(node.val);
                queue.offer(node.left);
                queue.offer(node.right);
            }else{
    
    
                res.append("null");
            }
            res.append(",");
        }
        res.append("]");
        return res.toString();
    }

    // Decodes your encoded data to tree.
    public TreeNode deserialize(String data) {
    
    
        if(data.equals("")){
    
    
            return null;
        }
        String[] dataList = data.substring(1, data.length() - 1).split(",");
        TreeNode root = new TreeNode(Integer.parseInt(dataList[0]));
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        int i = 1;
        while(!queue.isEmpty()){
    
    
            TreeNode node = queue.poll();
            if(!"null".equals(dataList[i])){
    
    
                node.left = new TreeNode(Integer.parseInt(dataList[i]));
                queue.offer(node.left);
            }
            i++;
            if(!"null".equals(dataList[i])){
    
    
                node.right = new TreeNode(Integer.parseInt(dataList[i]));
                queue.offer(node.right);
            }
            i++;
        }
        return root;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45867397/article/details/118767145
今日推荐