leetcode-半ば設計-297。シリアル化と逆シリアル化バイナリTree¶-NO - ??

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:コーデックのインスタンスには属性「ヴァルス」を持っていません
 

おすすめ

転載: www.cnblogs.com/rosyYY/p/10980268.html