题解 | #序列化二叉树#

序列化二叉树

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

题目要求要用'#'代表空值

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
import queue
class Solution:
    def Serialize(self, root) -> str:
        # write code here
        if not root:
            return '#'
        q = queue.Queue()
        res = []
        q.put(root)
        while not q.empty():
            temp = q.get()
            if temp:
                res.append(str(temp.val))
                q.put(temp.left)
                q.put(temp.right)
            else:
                res.append('#')
                continue

        print(','.join(res))
        return ','.join(res)
    
    def Deserialize(self, s: str) -> TreeNode:
        if s == '#':
            return None
        val_list = s.split(',')
        q = queue.Queue()
        root = TreeNode(int(val_list[0]))
        q.put(root)
        for i in range(1, len(val_list), 2):
            temp = q.get()
            left_val =  val_list[i]
            right_val = val_list[i + 1]
            temp.left = TreeNode(int(left_val)) if left_val != '#' else None
            temp.right = TreeNode(int(right_val)) if right_val != '#' else None
            if temp.left:
                q.put(temp.left)
            if temp.right:
                q.put(temp.right)
        return root
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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