劍指offer 序列化二叉樹

題目

請實現兩個函數,分別用來序列化和反序列化二叉樹

思路

前序遍歷序列化和反序列化,遞歸即可

代碼

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def __init__(self):
        self.res_list = []
    def seria(self, root):
        if root:
            self.res_list.append(root.val)
            self.seria(root.left)
            self.seria(root.right)
        else:
            self.res_list.append('#')
    def Serialize(self, root):
        # write code here
        self.seria(root)
        return self.res_list
    def deseria(self, s):
        if s[0] == '#':
            s.pop(0)
            return None
        root = TreeNode(s[0])
        s.pop(0)
        root.left = self.deseria(s)
        root.right = self.deseria(s)
        return root
    def Deserialize(self, s):
        # write code here
        s = list(s)
        return self.deseria(s)
發佈了572 篇原創文章 · 獲贊 47 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章