题解 | #序列化二叉树#

序列化二叉树

http://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

要点:

  1. 序列化成“根左根右”,利用根的位置区分开左右子树,这样反序列化的时候就非常方便
  2. 每个节点的值用()包裹,以防数值不止一位
# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def Serialize(self, root):
        # write code here
        if not root:
            return "(#)"
        s_root = "(" + str(root.val) + ")"
        s_left = self.Serialize(root.left)
        s_right = self.Serialize(root.right)
        s = s_root + s_left + s_root + s_right
        return s

    def Deserialize(self, s):
        # write code here
        if s == "(#)":
            return None
        root = s.split(")")[0] + ")"
        s = s.replace(root, " ")
        left = s.split()[0]
        right = s.split()[1]
        tree = TreeNode(int(root[1:-1]))
        tree.left = self.Deserialize(left)
        tree.right = self.Deserialize(right)
        return tree

全部评论

相关推荐

nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务