Number of Nodes in the Sub-Tree With the Same Label - Problem

You are given a tree (i.e. a connected, undirected graph that has no cycles) consisting of n nodes numbered from 0 to n - 1 and exactly n - 1 edges. The root of the tree is the node 0, and each node of the tree has a label which is a lower-case character given in the string labels (i.e. The node with the number i has the label labels[i]).

The edges array is given on the form edges[i] = [ai, bi], which means there is an edge between nodes ai and bi in the tree.

Return an array of size n where ans[i] is the number of nodes in the subtree of the ith node which have the same label as node i.

A subtree of a tree T is the tree consisting of a node in T and all of its descendant nodes.

Input & Output

Example 1 — Basic Tree
$ Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], labels = "abaedcd"
Output: [2,1,1,1,1,1,1]
💡 Note: Node 0 (label 'a'): subtree has nodes 0,1,2,3,4,5,6 with labels 'abaedcd', count of 'a' = 2. Node 1 (label 'b'): subtree has nodes 1,4,5 with labels 'bed', count of 'b' = 1.
Example 2 — All Same Labels
$ Input: n = 4, edges = [[0,1],[1,2],[0,3]], labels = "bbbb"
Output: [4,2,1,1]
💡 Note: All nodes have label 'b'. Node 0's subtree contains all 4 nodes. Node 1's subtree contains nodes 1,2 (2 nodes). Leaves 2,3 each contain only themselves.
Example 3 — Single Path
$ Input: n = 3, edges = [[0,1],[1,2]], labels = "abc"
Output: [1,1,1]
💡 Note: Each node has a unique label, so each subtree contains only 1 node with its own label.

Constraints

  • 1 ≤ n ≤ 105
  • edges.length == n - 1
  • edges[i].length == 2
  • 0 ≤ ai, bi < n
  • ai ≠ bi
  • labels.length == n
  • labels is consisting of only of lowercase English letters

Visualization

Tap to expand
Count Nodes with Same Label in Each Subtreea0b1a2e4d5c3d6Node 0 subtree: a,b,a,e,d,c,d → 2 'a'sNode 1 subtree: b,e,d → 1 'b'Node 2 subtree: a,c,d → 1 'a'Output: [2,1,1,1,1,1,1]
Understanding the Visualization
1
Input Tree
Tree with n=7 nodes and labels 'abaedcd'
2
Count Process
For each node, count same labels in its subtree
3
Output Array
Result array where result[i] = count for node i
Key Takeaway
🎯 Key Insight: Use DFS post-order traversal to collect label counts from children and avoid redundant subtree visits
Asked in
Amazon 15 Microsoft 12 Google 8
28.5K Views
Medium Frequency
~25 min Avg. Time
890 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen