原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwxa3m/
解法一
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Codec:
def serialize(self, root):
"""Encodes a tree to a single string.
:type root: TreeNode
:rtype: str
"""
res = []
def preorder(root):
if not root:
res.append('n')
return
res.append(str(root.val))
preorder(root.left)
preorder(root.right)
preorder(root)
return ','.join(res)
def deserialize(self, data):
"""Decodes your encoded data to tree.
:type data: str
:rtype: TreeNode
"""
arr = data.split(',')
arr.reverse()
def preorder(arr):
if not arr:return
if arr[-1] == 'n':
arr.pop()
return
root = TreeNode(int(arr.pop()))
root.left = preorder(arr)
root.right = preorder(arr)
return root
return preorder(arr)
# Your Codec object will be instantiated and called as such:
# ser = Codec()
# deser = Codec()
# ans = deser.deserialize(ser.serialize(root))
思路:递归前序遍历即可。