Class Solution
-
- All Implemented Interfaces:
public final class Solution2791 - Count Paths That Can Form a Palindrome in a Tree\.
Hard
You are given a tree (i.e. a connected, undirected graph that has no cycles) rooted at node
0consisting ofnnodes numbered from0ton - 1. The tree is represented by a 0-indexed arrayparentof sizen, whereparent[i]is the parent of nodei. Since node0is the root,parent[0] == -1.You are also given a string
sof lengthn, wheres[i]is the character assigned to the edge betweeniandparent[i].s[0]can be ignored.Return the number of pairs of nodes
(u, v)such thatu < vand the characters assigned to edges on the path fromutovcan be rearranged to form a palindrome.A string is a palindrome when it reads the same backwards as forwards.
Example 1:
Input: parent = -1,0,0,1,1,2, s = "acaabc"
Output: 8
Explanation:
The valid pairs are:
All the pairs (0,1), (0,2), (1,3), (1,4) and (2,5) result in one character which is always a palindrome.
The pair (2,3) result in the string "aca" which is a palindrome.
The pair (1,5) result in the string "cac" which is a palindrome.
The pair (3,5) result in the string "acac" which can be rearranged into the palindrome "acca".
Example 2:
Input: parent = -1,0,0,0,0, s = "aaaaa"
Output: 10
Explanation: Any pair of nodes (u,v) where u < v is valid.
Constraints:
n == parent.length == s.length<code>1 <= n <= 10<sup>5</sup></code>
0 <= parent[i] <= n - 1for alli >= 1parent[0] == -1parentrepresents a valid tree.sconsists of only lowercase English letters.