件名の説明:
この方法の一つ:
#のバイナリツリーノードの定義。 #のクラスのTreeNode: # デフ__init __(自己、X): # self.val = X # self.left =なし #1 self.right =なし クラスソリューション: DEF INORDER一覧の[int]は、::リスト[buildTree(自己、前順INT]) - > のTreeNode: DEFヘルパー(in_left = 0、in_right = )でlen(INORDER): ローカル以外pre_idxの #サブツリーを構築するために要素が存在しない場合 場合 in_leftは== in_right:返すなし #はrootとしてpre_idx要素を拾います root_val = 予約限定[pre_idx] ルート = のTreeNode(root_val) #のリストINORDERルート分割 #左と右のサブツリーへの インデックスは= idx_map [root_val] #の再帰 pre_idx + = 1 #ビルド左サブツリー root.left = ヘルパー(in_left、インデックス) #構築右のサブツリー root.right =ヘルパー(インデックス+ 1 、in_right) リターンルート #の最初の先行順要素から開始 pre_idx = 0 #はハッシュマップの値を構築する- >インデックス idx_map = {ヴァル:IDX 用の IDX、ヴァルで(INORDER)列挙} 戻りヘルパー()