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

时间:2023-03-09 16:59:01
【剑指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 日 – 北京雾霾+沙尘暴,我的天。。