• 剑指offer 61.序列化二叉树


    剑指offer 61.序列化二叉树

    题目

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

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

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

    思路

    这题其实可以面向答案编程,直接设一个root返回就行了,牛客不检查那个字符串。
    正规做法还是递归,中左右前序,直接就行了。

    代码

      public class TreeNode {
    
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
          this.val = val;
        }
      }
    
      int index;
      String Serialize(TreeNode root) {
    
        StringBuffer sb = new StringBuffer();
        if(root == null){
          sb.append("#,");
          return sb.toString();
        }
        sb.append(root.val+",");
        sb.append(Serialize(root.left));
        sb.append(Serialize(root.right));
        return sb.toString();
      }
      TreeNode Deserialize(String str) {
        
        if(str == null){
          return null;
        }
        index = -1;
        String[] strSeg = str.split(",");
    
        return DeserializeStr(strSeg);
    
      }
    
      public TreeNode DeserializeStr(String[] strSeg){
        index++;
        TreeNode treeNode = null;
        if(!strSeg[index].equals("#")){
          treeNode = new TreeNode(Integer.valueOf(strSeg[index]));
          treeNode.left = DeserializeStr(strSeg);
          treeNode.right = DeserializeStr(strSeg);
        }
        return treeNode;
      }
    
  • 相关阅读:
    算法 python实现(二) 冒泡排序
    算法 python实现(一) 基本常识
    python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数
    IT桔子-抓取数据
    mac中导出CSV格式在excel中乱码
    phantomJS安装
    pyquery 安装
    mac终端的命令都失效的解决方法
    Python爬虫防封杀方法集合
    python爬虫 403 Forbidden 解决方法
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12426385.html
Copyright © 2020-2023  润新知