题解 | #序列化二叉树#

序列化二叉树

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:11
我最近都有点不想活了,天天早10晚11的,还问我爱不爱她目前的状态别说爱谁了,没扇谁就不错了。是不是大家都是一进节子,只有工作没有爱情了
AzureSkies:在字节的时候找的就是字节的,飞书太适合恋爱人士了,能看到是不是已读,是不是在会议中。简直冥婚好伴侣
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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