zoukankan      html  css  js  c++  java
  • leetcode 序列化二叉树

    https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/

    就是层级遍历,搞一个queue,然后层级遍历,左右子树为空也要add到queue,因为要保留整颗树的结构,反解析的时候同理,遇到为null的,就不添加queue了

    import java.util.LinkedList;
    import java.util.Queue;
    
    public class Codec {
        public String serialize(TreeNode root) {
            if(root == null) {
                return "[]" ;
            }
    
            StringBuilder stringBuilder = new StringBuilder();
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.add(root);
            stringBuilder.append("[");
            while (!queue.isEmpty()){
                TreeNode node = queue.poll();
                if(node != null) {
                    stringBuilder.append(node.val);
                    stringBuilder.append(",");
                    queue.add(node.left);
                    queue.add(node.right);
                } else {
                    stringBuilder.append("null,");
                }
            }
    
            stringBuilder.deleteCharAt(stringBuilder.length()-1);
            stringBuilder.append("]");
    
            return stringBuilder.toString();
        }
    
        public TreeNode deserialize(String data) {
            if(data.equals("[]")) {
                return null;
            }
    
            String nodeStr = data.substring(1, data.length()-1);
            String[] nodeVal = nodeStr.split(",");
            TreeNode root = new TreeNode(Integer.parseInt(nodeVal[0]));
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.add(root);
            int index = 1;
            while (!queue.isEmpty()){
                TreeNode node = queue.poll();
                if(!nodeVal[index].equals("null")){
                    node.left = new TreeNode(Integer.parseInt(nodeVal[index]));
                    queue.add(node.left);
                }
    
                index++;
    
                if(!nodeVal[index].equals("null")){
                    node.right = new TreeNode(Integer.parseInt(nodeVal[index]));
                    queue.add(node.right);
                }
    
                index++;
            }
    
            return root;
        }
    }
    

      

  • 相关阅读:
    AVAudioSession
    (whh仅供自己参考)进行ip网络请求的步骤
    1、大部分社交平台接口不支持https协议。
    怎样在官网上下载xcode7.2
    ios9 http请求失败的问题
    真机测试最详细的步骤
    svn的初级使用
    framework not found -fno-arc编译错误
    单例对象
    IOS6学习笔记(三)
  • 原文地址:https://www.cnblogs.com/iamzhoug37/p/12952655.html
Copyright © 2011-2022 走看看