[Leetcode 114] Flatten Binary Tree To Linked List

이재윤·2025년 1월 27일

https://leetcode.com/problems/flatten-binary-tree-to-linked-list/description/?envType=study-plan-v2&envId=top-interview-150

1) 코드

# 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 __init__(self):
        self.prev = None
    
    def flatten(self, root: Optional[TreeNode]) -> None:
        """
        Do not return anything, modify root in-place instead.
        """
        self.dfs(root)

    def dfs(self, root):
        if not root:
            return None 

        self.dfs(root.right)
        self.dfs(root.left)

        root.right = self.prev
        root.left = None
        self.prev = root

        return root 

2) 해설

  • 이진 트리를 오른쪽부터 탐색을 한다
    -> 그리고 self.prev에 노드를 저장하고, root.right에 계속해서 반복적으로 붙여나가는 식으로 Flatten을 해줄 수 있다.

0개의 댓글