安全プランを証明する - 配列+行きがけを作成するために、

タイトル説明

そして、バイナリツリーの再構築の先行順走査でのバイナリツリーの先行順走査で結果を入力してください。仮定結果先行順トラバーサル順序と重複する数字の入力は無料です。入射例えばプレオーダートラバーサルシーケンス{1,2,4,7,3,5,6,8}及び{4,7,2,1,5,3,8,6}順序トラバーサル順序、及び再構成された二分木前リターン。

 アイデア:

最初の数を横断プリオーダーの中に発見、この数がルートであり、右のサブ構成の右を指すアレイを横断中の数、根の左の部分木を構成する多数の前の数を見つけますツリー。

そして、再帰

class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if len(pre) == 0:
            return None
        elif len(pre) == 1:
            return TreeNode(pre[0])
        
        target = pre[0]
        for i in range(0,len(tin)):
            if tin[i] == target:
                root = TreeNode(target)
                root.left = self.reConstructBinaryTree(pre[1:i+1],tin[:i])
                root.right = self.reConstructBinaryTree(pre[i+1:],tin[i+1:])
        return root

私はハード磨くしないかわからない、タイトルの気持ちが証明する安全の申し出がないハードleetcode

公開された45元の記事 ウォンの賞賛1 ビュー3354

おすすめ

転載: blog.csdn.net/qq_22498427/article/details/104708655