题解 | #单调栈#
序列化二叉树
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