Longest path with different adjacent characters
January 13, 2023
treeProblem URL: Longest path with different adjacent characters
We will create a tree from the edges list. Then we will start DFS from starting node 0
. Then we will calculate the longest path in the subtree of each node. Finally we will return the longest path in the subtree of each node.
class Solution:
def longestPath(self, parent: List[int], s: str) -> int:
tree = defaultdict(list)
for end, start in enumerate(parent):
tree[start].append(end)
self.res = 1
def dfs(node):
max1 = max2 = 0
for nei in tree[node]:
neiL = dfs(nei)
if s[nei] != s[node]:
if neiL > max1:
max2 = max1
max1 = neiL
elif neiL > max2:
max2 = neiL
self.res = max(self.res, max1+max2+1)
return max1+1
dfs(0)
return self.res
Time complexity: O(n)
Space complexity: O(n)