EASY NC#51 Blind #66 Trees

572. Subtree of Another Tree

📖 Problem

Given the roots of two binary trees root and subRoot, return true if there is a subtree of root with the same structure and node values of subRoot, and false otherwise. A subtree of a binary tree tree is a tree that consists of a node in tree and all of this node's descendants. The tree tree could also be considered as a subtree of itself.

🧠 Visual Learning Aid

1 Model the input into the right structure
2 Choose the core technique and invariant
3 Execute step-by-step with a sample
4 Validate complexity and edge cases

JS/TS Refreshers

  • •Array methods (`push`, `pop`, `shift`, `slice`)
  • •Object/Map/Set usage patterns
  • •Function parameter and return typing
  • •In-place array updates
  • •Sorted array traversal
  • •Boundary condition checks

Logical Thinking Concepts

  • •Define invariants before coding
  • •Check edge cases first (`[]`, single element, duplicates)
  • •Estimate time/space before implementation
  • •Apply Two Pointers reasoning pattern
  • •Apply BFS reasoning pattern
  • •Apply Recursion reasoning pattern

💡 Approach

  • → For each node in root, check if it matches subRoot
  • → Use isSameTree helper to compare two trees
  • → Recursively check left and right subtrees
  • → Time: O(m * n) where m = nodes in root, n = nodes in subRoot

🛠️ Hints & Pitfalls

Hints

  • •For each node in root, check if it matches subRoot
  • •Use isSameTree helper to compare two trees
  • •Recursively check left and right subtrees

Common Pitfalls

  • •Time: O(m * n) where m = nodes in root, n = nodes in subRoot

🧪 Test Cases

Hidden tests on submit: 3

Test Case 1
Not run
Input:
buildTree([3,4,5,1,2]);
Expected:
{"val":3,"left":{"val":4,"left":{"val":1,"left":null,"right":null},"right":{"val":2,"left":null,"right":null}},"right":{"val":5,"left":null,"right":null}}
Test Case 2
Not run
Input:
buildTree([4,1,2]);
Expected:
{"val":4,"left":{"val":1,"left":null,"right":null},"right":{"val":2,"left":null,"right":null}}
Test Case 3
Not run
Input:
buildTree([4,1,2,1]);
Expected:
{"val":4,"left":{"val":1,"left":{"val":1,"left":null,"right":null},"right":null},"right":{"val":2,"left":null,"right":null}}

📝 Code Editor

📚 Reference Solution

▼
⌘K Search ⌘↩ Run ⌘S Submit