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