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
- Updated
Read the problem on LeetCode View on GitHub
The problem statement is LeetCode’s and stays on their site. What follows is my accepted solution.
Python
Accepted on LeetCode — runtime 0ms, memory 17.4MB, accepted 2026-01-02.
# 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]