zoukankan      html  css  js  c++  java
  • 反序列化二叉树-队列

    package Leetcode;
    
    import java.util.LinkedList;
    import java.util.Queue;
    
    //请实现两个函数,分别用来序列化和反序列化二叉树。
    public class test37 {
        public static void main(String[] args) {
            TreeNode t=new TreeNode(1);
            t.left=new TreeNode(2);
            t.right=new TreeNode(3);
            t.right.left=new TreeNode(4);
            t.right.right=new TreeNode(5);
            String s=serialize(t);
            TreeNode tr=deserialize(s);
            int x=0;
        }
            // Encodes a tree to a single string.
        public static String serialize(TreeNode root) {
            if(root==null){
                return "[]";
            }
            String s="";
            Queue<TreeNode> q=new LinkedList<>();
            q.offer(root);
            s=s+"[";
            while(!q.isEmpty()){
                TreeNode t=q.poll();
                if(t!=null){
                    s=s+t.val+",";
                    q.offer(t.left);
                    q.offer(t.right);
                }else{
                    s=s+"null,";
                }
    
            }
            s=s.substring(0,s.length()-1);
            s=s+"]";
            return s;
        }
    
        // Decodes your encoded data to tree.
        public static TreeNode deserialize(String data) {
            if(data.equals("[]")){
                return null;
            }
            String []s=data.substring(1, data.length()-1).split(",");
            TreeNode root=new TreeNode(Integer.parseInt(s[0]));
            Queue<TreeNode> q=new LinkedList<>();
            q.offer(root);
            int i=1;
            while(!q.isEmpty()){
                TreeNode tr=q.poll();
                if(!s[i].equals("null")){
                    tr.left=new TreeNode(Integer.parseInt(s[i]));
                    q.offer(tr.left);
                }
                i++;
                if(!s[i].equals("null")){
                    tr.right=new TreeNode(Integer.parseInt(s[i]));
                    q.offer(tr.right);
                }
                i++;
            }
            return root;
            
        }
    
    }
  • 相关阅读:
    第五讲:深入hibernate的三种状态
    mysql安装图解 mysql图文安装教程(详细说明)
    Codeforces 13C
    ubuntu常用软件
    git安装方法
    SSH免密码登录的方法
    bash 小技巧
    Haskell 学习
    客户端connect返回错误显示No route to host
    ubuntu下C操作Mysql数据库第一步
  • 原文地址:https://www.cnblogs.com/jieyi/p/14236814.html
Copyright © 2011-2022 走看看