LeetCode solutions

1011. Flip Binary Tree To Match Preorder Traversal

My accepted Python solution to LeetCode problem 1011, Flip Binary Tree To Match Preorder Traversal, running in 0ms.

  • Difficulty: Medium
  • Python
  • Runtime 0ms
  • Memory 17.4MB

Read the problem on LeetCode View on GitHub

Python

Accepted on LeetCode — runtime 0ms, memory 17.4MB, accepted 2026-01-02.

python
# 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 flipMatchVoyage(self, root: Optional[TreeNode], voyage: List[int]) -> List[int]:
        self.idx = 0
        self.result = []
        
        def dfs(node):
            if not node:
                return True
            
            if node.val != voyage[self.idx]:
                return False
            
            self.idx += 1
            
            # If left child exists but doesn't match, try flipping
            if node.left and node.left.val != voyage[self.idx]:
                self.result.append(node.val)
                # Swap children
                node.left, node.right = node.right, node.left
            
            return dfs(node.left) and dfs(node.right)
        
        if dfs(root):
            return self.result
        return [-1]

Source