'파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀
문제 👉 <Construct Binary Tree from Preorder and Inorder Traversal - LeetCode>
1. 문제 (전위, 중위 순회 결과로 이진 트리 구축)
트리의 전위, 중위 순회로 결과를 입력값으로 받아 이진 트리를 구축하라.
2. 풀이
전위의 첫번 째 값은 부모 노드이며 중위 순회 결과를 left와 right로 나누는 역할을 한다.
- 전위 순회의 값을 순차적으로 빼면서 중위 순회를 left와 right로 나눈다.
3. 코드
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
if inorder:
index = inorder.index(preorder.pop(0))
node = TreeNode(inorder[index])
node.left = self.buildTree(preorder, inorder[0:index])
node.right = self.buildTree(preorder, inorder[index+1:])
return node
- 결과 :
방식 | Status | Runtime | Memory | Language |
---|---|---|---|---|
순회 | [Accepted] | 132 ms | 52.6 MB | python3 |
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > LeetCode' 카테고리의 다른 글
[LeetCode] 108. Convert Sorted Array to Binary Search Tree [Python(파이썬)] (0) | 2021.11.24 |
---|---|
[LeetCode] 687. Longest Univalue Path [Python(파이썬)] (0) | 2021.11.24 |
[LeetCode] 617. Merge Two Binary Trees [Python(파이썬)] (0) | 2021.11.24 |
댓글