mycode
何も考えがない場合は、ツリーにリストを変換します
参考:
両端キューキュー二国間(両端キュー)、およびキュースタックの性質上、リストに基づいて移動、回転、および追加などが増加
クラスコーデック: DEF シリアライズ(自己、根): 「」「単一の文字列にツリーをエンコード。 :タイプルート:ツリーノード :RTYPE:STR 『』」 ヴァルスは = [] DEF (ルート)プレオーダー: 場合 ではないルート: ヴァルスを。 (追記' #' ) それ以外: vals.append(STR(root.val)) 予約限定(root.left) 予約限定(root.right) 予約限定(ルート) のリターン ' ' .join(ヴァルス) デフ(自己、データ)デシリアライズ: "" " ツリーにあなたの符号化データをデコードします。 :タイプデータ:STR :RTYPE:TreeNodeの """ ヴァルス = collections.deque(valのためのval でdata.splitは()) DEF 構築(): もしヴァルス: ヴァル = vals.popleft() 場合のval == ' #' : 返すなし ルート = のTreeNode(INT(ヴァル))を root.left = ビルド() root.right= ビルド() の戻りルート リターンビルド() #あなたのコーデックオブジェクトがインスタンス化され、などと呼ばれます: #1 コーデック=コーデック()# のcodec.deserialize(codec.serialize(ルート))
前記キューリストを置き換えることができます
デフデシリアライズ(自己、データ): "" " ツリーにあなたの符号化データをデコードします。 :タイプデータ:STR :RTYPE:TreeNodeの """ 印刷(データ) self.vals = [valのためのval でdata.split()] 印刷(self.vals) DEF ()構築: もしself.vals: ヴァル = self.vals [0] self.vals = self.vals [1 :] もしヴァル== ' #' : 戻りなし ルート= のTreeNode(INT(ヴァル)) root.left = ビルド() root.right = ビルド() の戻りルート リターンビルド()
疑い
デフデシリアライズ(自己、データ): "" " ツリーにあなたの符号化データをデコードします。 :タイプデータ:STR :RTYPE:TreeNodeの """ 印刷(データ) ヴァルスは = [valのためのval でdata.split()] プリント(自己.vals) DEF )(ビルド: 場合:ヴァルス ヴァル = ヴァルス[0] ヴァルス[:] =のヴァルス[1 :] プリント(ヴァルス) 場合ヴァル== ' #' : 返却なし ルートを = のTreeNode(INT(ヴァル)) root.left = ビルド() root.right = ビルド() の戻りルート リターンビルド()
35行目は:はAttributeError:コーデックのインスタンスには属性「ヴァルス」を持っていません