一般的方式,都是二叉樹生成字符串
字符串生成二叉樹,遵循二叉樹的遞歸生成字符串的方式進行遍歷。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)