zoukankan      html  css  js  c++  java
  • 61.序列化二叉树(python)

    题目描述

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

    二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。
     1 class Solution:
     2     def Serialize(self, root):
     3         # write code here 
     4         retList = []
     5         def preOrder(root):
     6             if root == None:
     7                 retList.append("#")
     8                 return 
     9             retList.append(str(root.val))
    10             preOrder(root.left)
    11             preOrder(root.right)
    12         preOrder(root)
    13         return ' '.join(retList)
    14     def Deserialize(self, s):
    15         # write code here
    16         retList = s.split()
    17         def dePreOrder():
    18             if retList == []:
    19                 return None
    20             rootVal = retList[0]
    21             del retList[0]
    22             if rootVal == "#":
    23                 return None
    24             node = TreeNode(int(rootVal))
    25             leftNode = dePreOrder()
    26             rightNode = dePreOrder()
    27             node.left = leftNode
    28             node.right = rightNode
    29             return node
    30         pRoot = dePreOrder()
    31         return pRoot

    2020-01-01 19:34:24

  • 相关阅读:
    [BZOJ3195] [Jxoi2012]奇怪的道路
    Splay Tree
    区间DP复习
    Link Cut Tree
    [BZOJ2734] [HNOI2012]集合选数
    如何写出杀手级简历(针对程序员) (转)
    30个提高Web程序执行效率的好经验(转)
    Oracle中的SQL跟踪( 转)
    如何终止SQL Server中的用户进程(转)
    Will the real programmers please stand up?(转)
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12129602.html
Copyright © 2011-2022 走看看