• 序列化二叉树



    请实现两个函数,分别用来序列化和反序列化二叉树

    二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)

    二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果 str,重构二叉树


    解题思路

    public class Solution {
        String Serialize(TreeNode root) {
            if(root == null) {
                return "#!";
            }
            StringBuilder sb = new StringBuilder();
            serializeHelper(root, sb);
            return sb.toString();
        }
        
        void serializeHelper(TreeNode node, StringBuilder sb) {
            if(node == null) {
                sb.append("#!");
                return;
            }
            sb.append(node.val + "!");
            serializeHelper(node.left, sb);
            serializeHelper(node.right, sb);
        }
        
        TreeNode Deserialize(String str) {
            if(str.length() == 0) {
               return null;
            }
            String[] strs = str.split("!");
            return deserializeHelper(strs);
        }
        
        int index = -1;
        
        TreeNode deserializeHelper(String[] strs) {
            index++;
            if(!strs[index].equals("#")) {
                TreeNode node = new TreeNode(Integer.parseInt(strs[index]));
                node.left = deserializeHelper(strs);
                node.right = deserializeHelper(strs);
                return node;
            }
            return null;
        }
    }
    

  • 相关阅读:
    2021-6-3 日报博客
    2021-6-2 日报博客
    2021-6-1 日报博客
    2021-5-31 日报博客
    团队博客——十日冲刺结束
    团队博客——十日冲刺9
    团队博客——十日冲刺8
    团队博客——十日冲刺7
    周总结9
    团队博客——十日冲刺6
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/14204488.html
Copyright © 2020-2023  润新知