バイナリツリーの再構築オファー安全性を証明するために - 木-python

タイトル説明

そして、バイナリツリーの再構築の先行順走査でのバイナリツリーの先行順走査で結果を入力してください。仮定結果先行順トラバーサル順序と重複する数字の入力は無料です。入射例えばプレオーダートラバーサルシーケンス{1,2,4,7,3,5,6,8}及び{4,7,2,1,5,3,8,6}順序トラバーサル順序、及び再構成された二分木前リターン。
 
アイデア:最初のルートに最初を横断する前に見つけます。そして、順トラバーサルでの位置の値の外観は、インデックスに設定されています 
再帰を使用して、:の前順走査 左サブツリー のルートよりも長さ(1:指数+ 1)予約購入をしながら サブツリーの左 の長さ(:インデックス)
                  先行順走査 右サブツリーの ルート・ノードに加えて、長さ(インデックス+ 1 :)プレオーダーながら 右サブツリー 長さの(インデックス+ 1 :)ルートが原因インデックスであります
 
- * -コーディング:UTF-8 - * - 。 クラスのTreeNode:      DEF __init __(自己、X):          self.val = X          self.left =なし         self.right =なし
クラスソリューション:
     #のリターンの設定ツリーノードのルート
    DEF reConstructBinaryTree(セルフ、事前に、錫):
        書き込みコードここ壁紙
        #は先行順走査が錫で事前予約限定されない
        のIF  ない事前または 錫:
             戻りなし
        ルート = のTreeNode(事前に[0])
        インデックス =錫。インデックス(root.val)
        root.left = self.reConstructBinaryTree(PRE [1:インデックス+ 1 ]、錫[:インデックス])
        root.right = self.reConstructBinaryTree(予備[インデックス+ 1]、錫[インデックス+ 1 :])
         戻りルート

おすすめ

転載: www.cnblogs.com/ansang/p/11892350.html