• 剑指offer——序列化二叉树


    序列化二叉树

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

    在序列化二叉树时,可以使用二叉树遍历的递归版本,也可以使用迭代版本,而且先序遍历,中序遍历,后序遍历和层序遍历都可以实现,但是在进行反序列化时,本来用二叉树中序遍历实现的序列化,不会反序列化回来,可能是我功力不够吧,现在只会先序遍历的反序列化

    目前知道到的有先序遍历层序遍历两种实现方案

    import java.util.Queue;
    import java.util.LinkedList;
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        String Serialize(TreeNode root) {
            if(root == null) return "#_";
    
            String str = root.val + "_";
            str += Serialize(root.left);
            str += Serialize(root.right);
            return str;
        }
        TreeNode Deserialize(String str) {
            if(str == null || str.length() == 0) return null;
            String[] strs = str.split( "_" );
            Queue<String> queue = new LinkedList<>();
            for(int i = 0; i < strs.length; i++){
                queue.offer( strs[i] );
            }
            return reConstructTree(queue);
        }
    
        TreeNode reConstructTree(Queue<String> queue) {
            String str = queue.poll();
            if("#".equals(str)) {
                return null;
            }
            TreeNode node = new TreeNode(Integer.valueOf(str));
            node.left = reConstructTree( queue);
            node.right = reConstructTree( queue);
            return node;
        }
    }
    

      

  • 相关阅读:
    Python安装appium 遇见的报错
    appium
    QQ邮箱/微信邮箱发送邮件
    Python-变量
    神秘的咒语
    宿命的PSS
    E. Congruence Equation
    D. Substring
    leetcode 761. Special Binary String
    F
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/9019663.html
Copyright © 2020-2023  润新知