给你一棵 n 个节点的树,树的根节点为 0 ,n 个节点的编号为 0 到 n - 1 。这棵树用一个长度为 n 的数组 parent 表示,其中 parent[i] 是节点 i 的父节点。由于节点 0 是根节点,所以 parent[0] == -1 。
给你一个长度为 n 的字符串 s ,其中 s[i] 是节点 i 对应的字符。
一开始你有一个空字符串 dfsStr ,定义一个递归函数 dfs(int x) ,它的输入是节点 x ,并依次执行以下操作:
x 的所有孩子节点 y ,并调用 dfs(y) 。s[x] 添加到字符串 dfsStr 的末尾。注意,所有递归函数 dfs 都共享全局变量 dfsStr 。
你需要求出一个长度为 n 的布尔数组 answer ,对于 0 到 n - 1 的每一个下标 i ,你需要执行以下操作:
dfsStr 并调用 dfs(i) 。dfsStr 是一个 回文串 ,answer[i] 为 true ,否则 answer[i] 为 false 。请你返回字符串 answer 。
示例 1:

输入:parent = [-1,0,0,1,1,2], s = "aababa"
输出:[true,true,false,true,true,true]
解释:
dfs(0) ,得到字符串 dfsStr = "abaaba" ,是一个回文串。dfs(1) ,得到字符串dfsStr = "aba" ,是一个回文串。dfs(2) ,得到字符串dfsStr = "ab" ,不 是回文串。dfs(3) ,得到字符串dfsStr = "a" ,是一个回文串。dfs(4) ,得到字符串 dfsStr = "b" ,是一个回文串。dfs(5) ,得到字符串 dfsStr = "a" ,是一个回文串。示例 2:

输入:parent = [-1,0,0,0,0], s = "aabcb"
输出:[true,true,true,true,true]
解释:
每一次调用 dfs(x) 都得到一个回文串。
提示:
n == parent.length == s.length1 <= n <= 105i >= 1 ,都有 0 <= parent[i] <= n - 1 。parent[0] == -1parent 表示一棵合法的树。s 只包含小写英文字母。