
On the same path
You have to write a function that receives a tree – potentially large but finite –
and a list of pairs of tree's nodes.
For each pair, you must determine if the two nodes are on a same path (True) in the tree or not (False),
then return an iterable/list of these booleans.
Input: two arguments:
- a tree as a tuple (a node, list of sub-trees)
- a list of pairs (the tuples of two nodes)
Output: An iterable/list of booleans.
Example:
on_same_path( ('Me', [('Daddy', [('Grandpa', []), ('Grandma', [])]), ('Mom', [('Granny', []), ('?', [])])]), [('Grandpa', 'Me'), ('Daddy', 'Granny')], ) == [True, False]

on_same_path( (1, [(2, [(4, []), (5, [(7, []), (8, []), (9, [])])]), (3, [(6, [])])]), [(1, 5), (2, 9), (2, 6)], ) == [True, True, False]

on_same_path( (0, [(1, [(2, []), (3, [])]), (4, [(5, []), (6, [])]), (7, [(8, []), (9, [])])]), [(4, 2), (0, 5), (2, 3), (9, 2), (6, 4), (7, 8), (8, 1)], ) == [False, True, False, False, True, True, False]

Preconditions:
- the tree is finite and has less than 1000 nodes
- for each given tree all nodes are either the integers or strings
- len(pairs) ≤ 32