一般的方式,都是二叉树生成字符串
字符串生成二叉树,遵循二叉树的递归生成字符串的方式进行遍历。node
""" 1.二叉树先序遍历,能够保证按照容易理解的角度从上到下进行遍历,显示,输出 2.先序后序中序遍历,都是 深度递归,显示上都会与直接直觉有出入 3.经过遍历后的字符串,反出创建 二叉树,能够尊徐 序列化的模式进行创建,一样适用。 因为遍历是深度递归造成字符串,因此生成二叉树一样能够深度递归。碰到终止标志,才终止深度递归转向另外一个方向。 bug缘由:字符串的遍历方式,除了顺序遍历方式,也能够采用递归便利方式,遵循递归的规律。 """ class TreeNode(object): def __init__(self,value): self.value=value self.leftnode=None self.rightnode=None str_raw='1246###5#73#89##' def deserialize(chars): if len(chars)==0: return None assert isinstance(chars,list) char_cur=chars.pop(0) if char_cur=='#': return None else: node_cur=TreeNode(char_cur) node_cur.leftnode=deserialize(chars) node_cur.rightnode=deserialize(chars) return node_cur out=deserialize(list(str_raw)) print(out) str_out='' def serialization(tree_in): global str_out str_out=str_out+tree_in.value if tree_in.leftnode: serialization(tree_in.leftnode) else: str_out+='#' if tree_in.rightnode: serialization(tree_in.rightnode) else: str_out+='#' serialization(out) print(str_out)