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

  • 相关阅读:
    Delphi常用内存管理函数
    delphi中VirtualStringTree树使用方法
    Delphi常量
    delphi中的copy函数和pos函数
    delphi 中 delete的用法
    字软元件和位软元件的区别
    Virtual Treeview使用要点
    QTreeWidget搜索功能---遍历QTreeWidget
    C 语言使用 sqlite3
    opendir 与 readdir
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12129602.html
Copyright © 2011-2022 走看看