タイトル説明
そして、バイナリツリーの再構築の先行順走査でのバイナリツリーの先行順走査で結果を入力してください。仮定結果先行順トラバーサル順序と重複する数字の入力は無料です。入射例えばプレオーダートラバーサルシーケンス{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 :]) 戻りルート