[leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
問題の説明
リンク
順序付け、順序付けでbstを作成する問題の表示
アクセス1-Recursion
コード1
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
left = right = None
num = len(preorder)
if num == 0: return left
root = TreeNode(preorder[0])
if num == 1: return root
elif num == 2:
if preorder == inorder:
right = TreeNode(preorder[1])
else:
left = TreeNode(preorder[1])
else:
rootIdx = inorder.index(root.val)
left = self.buildTree(preorder[1:rootIdx + 1], inorder[:rootIdx])
right = self.buildTree(preorder[rootIdx+1:], inorder[rootIdx+1:])
root.left = left
root.right = right
return root
アクセス2-アプリケーションの復元
ポップアップ
コード2
class Solution:
def buildTree(self, preorder, inorder):
def build(stop):
if inorder and inorder[-1] != stop:
root = TreeNode(preorder.pop())
root.left = build(root.val)
inorder.pop()
root.right = build(stop)
return root
preorder.reverse()
inorder.reverse()
return build(None)
Reference
この問題について([leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal), 我々は、より多くの情報をここで見つけました https://velog.io/@youn_22/leetcode-105.-Construct-Binary-Tree-from-Preorder-and-Inorder-Traversalテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol