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
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
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code