![]() |
VOOZH | about |
Given a root of the Binary Tree and head of the Linked List, the task is to check if all the elements of the linked list corresponds to a downward path from any node in the given Binary Tree.
Examples:
Input: Tree in the image below, list = {3, 6, 8}
Output: Yes
Explanation: There exists a downward path in the given Binary Tree, having all the elements of the linked list in the same order.Input: Tree in the image below, list = {1, 2, 5, 7}
Output: Yes
Approach: The given problem can be solved with the help of the DFS Traversal of the Binary tree. During the DFS traversal, if any node of the Binary Tree is equal to the head of the linked list, a recursive function isPathUntil() can be called to recursively check whether the other elements of the linked list also exist as a path from that node. If the complete linked list has been traversed, there exists a valid required path, hence return true. Otherwise, return false. Follow the steps below to solve the given problem:
Below is the implementation of the above approach:
Yes
Time Complexity: O(N * M) where N = Number of nodes in the Binary Tree and M = Number of nodes in the Linked list.
Auxiliary Space: O(height of the tree)