I. Description
II. Code
# 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
# # __repr__ 메서드 추가
# def __repr__(self):
# return f"TreeNode(val={self.val})"
class Solution:
def bstFromPreorder(self, preorder: List[int]) -> Optional[TreeNode]:
root = TreeNode(preorder[0])
stack = [root]
for value in preorder[1:]:
if value < stack[-1].val:
stack[-1].left = TreeNode(value)
stack.append(stack[-1].left)
else:
while stack and stack[-1].val < value:
last = stack.pop()
last.right = TreeNode(value)
stack.append(last.right)
# print(stack)
return root
처음 보는 유형의 문제라 많이 헷갈렸다. 패드에 순서대로 그려가면서 이해하는 것 자체가 공부가 되었다.
'코테 준비 > Stack' 카테고리의 다른 글
[LeetCode] 1006. Clumsy Factorial (0) | 2025.01.26 |
---|---|
[LeetCode] 1003. Check If Word Is Valid After Substitutions (0) | 2025.01.26 |
[LeetCode] 1441. Build an Array with Stack Operations (0) | 2025.01.26 |
[LeetCode] 2487. Remove Nodes From Linked List (0) | 2025.01.24 |