【剑指Offer】序列化二叉树 解题报告(Python)

【剑指Offer】序列化二叉树 解题报告(Python)

标签(空格分隔): 剑指Offer


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

请实现两个函数,分别用来序列化和反序列化二叉树

解题方法

同样是LeetCode的原题,这里再复习一遍。采用Leetcode的官方序列化二叉树的方式,采用#表示空节点,树的前序遍历表示这个树。解序列化需要用一个队列。

代码:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
from collections import deque
class Solution:
    def Serialize(self, root):
        vals = []
        def preOrder(root):
            if not root:
                vals.append('#')
            else:
                vals.append(str(root.val))
                preOrder(root.left)
                preOrder(root.right)
        preOrder(root)
        return ' '.join(vals)

    def Deserialize(self, s):
        vals = deque(val for val in s.split())
        def build():
            if vals:
                val = vals.popleft()
                if val == '#':
                    return None
                root = TreeNode(int(val))
                root.left = build()
                root.right = build()
                return root
        return build()

Date

2018 年 3 月 28 日 – 北京雾霾+沙尘暴,我的天。。

posted @ 2018-03-28 11:44  负雪明烛  阅读(34)  评论(0)    收藏  举报