题解 | #单调栈#
序列化二叉树
http://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84
pyhon 层次遍历实现
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Serialize(self, root):
# write code here
if not root:
return "#"
queue = [root]
res = ""
while queue:
cur = queue.pop(0)
if cur:
queue.append(cur.left)
queue.append(cur.right)
res = res + str(cur.val) + ","
else:
res += "#,"
return res
def Deserialize(self, s):
# write code here
tree_list = s.split(",")
if tree_list[0] == "#":
return None
root = TreeNode(int(tree_list[0]))
queue = [root]
i = 1
while i < len(tree_list)-1:
cur = queue.pop(0)
if tree_list[i] != "#":
left_node = TreeNode(int(tree_list[i]))
cur.left = left_node
queue.append(cur.left)
if tree_list[i+1] != "#":
right_node = TreeNode(int(tree_list[i+1]))
cur.right = right_node
queue.append(cur.right)
i += 2
return root 