- E1: More than 2 children
- E2: Duplicate Tuples
- E3: Cycle present
- E4: Multiple roots
- E5: Multiple parents
Input is a expression containing parent child relations. output is Error codes or success.
Sample test cases
- Input: (A B)(A C)(B G)(C H)(E F)(B D)(C E) Output: Success
- Input: (A B)(A C)(A D) Output: E1
- Input: (A B)(A B) Output: E2
- Input: (A B)(B C)(C A) Output: E3
- Input: (A B)(C D) Output: E4
- Input: (A B)(B C)(A C) Output: E5
Solution
Code is written in node.js javascript. Tests are using mocha. Major trick in this question is that the data structure need to hold such data is not a binary tree but a graph. Or a graph with two sets of edges children and parents.
I used this DS in javascript to solve:
function Node(data) { this.data = data; this.children = []; this.parents = []; }
- add(n) where n is id of instance
- remove(n) where n is id of instance
- getRandom() which returns a random instance.
- Explain your projects in detail
- Key metrics about your project i.e. how much load it handled etc.
- If you are storing same data in separate DBs how will you keeping them in sync.
- If you are to write your project from scratch what will you change?
If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.