The question I have seen others post in the discussion but I have some of the tests and I can't quite figure out the expectations for those tests. Did as good as I could to explain the two different approaches I looked at but the test never quite lined up for me. Anyone have ideas on what I should have asked or how to arrive at the expectations on these tests? I can't even draw the trees out and make sense of them all.
The Question:
Menus are submitted as tree node with a key, value, and list of children, find the number of differences between the old tree and new tree. I asked the question:
How do to define a node as being different?
Based on that information I am still unable to figure out the expectations on these tests they submitted:
public static void main(String[] args) {
Solution solution = new Solution();
int expectedCount = 0;
int actualCount = 0;
// Example 1
Node existingMenu1 = new Node("a", 1);
Node existingMenu1b = new Node("b", 2);
Node existingMenu1c = new Node("c", 3);
Node existingMenu1d = new Node("d", 4);
Node existingMenu1e = new Node("e", 5);
Node existingMenu1f = new Node("f", 6);
existingMenu1.children = Arrays.asList(existingMenu1b, existingMenu1c);
existingMenu1b.children = Arrays.asList(existingMenu1d, existingMenu1e);
existingMenu1c.children = Arrays.asList(existingMenu1f);
Node newMenu1 = new Node("a", 1);
Node newMenu1c = new Node("c", 3);
Node newMenu1f = new Node("f", 66);
newMenu1.children = Arrays.asList(newMenu1c);
newMenu1c.children = Arrays.asList(newMenu1f);
expectedCount = 4;
actualCount = solution.countDifferentNodes(existingMenu1, newMenu1);
System.out.printf("Example 1 : expected=%d, actual=%d%n", expectedCount, actualCount);
// Example 2
Node existingMenu2 = new Node("a", 1);
Node existingMenu2b = new Node("b", 2);
Node existingMenu2c = new Node("c", 3);
Node existingMenu2d = new Node("d", 4);
Node existingMenu2e = new Node("e", 5);
Node existingMenu2g = new Node("g", 7);
existingMenu2.children = Arrays.asList(existingMenu2b, existingMenu2c);
existingMenu2b.children = Arrays.asList(existingMenu2d, existingMenu2e);
existingMenu2c.children = Arrays.asList(existingMenu2g);
Node newMenu2 = new Node("a", 1);
Node newMenu2b = new Node("b", 2);
Node newMenu2d = new Node("d", 4);
Node newMenu2e = new Node("e", 5);
Node newMenu2f = new Node("f", 6);
Node newMenu2g = new Node("g", 7);
Node newMenu2h = new Node("h", 8);
newMenu2.children = Arrays.asList(newMenu2b, newMenu2h);
newMenu2b.children = Arrays.asList(newMenu2e, newMenu2d, newMenu2f);
newMenu2h.children = Arrays.asList(newMenu2g);
expectedCount = 5;
actualCount = solution.countDifferentNodes(existingMenu2, newMenu2);
System.out.printf("Example 2 : expected=%d, actual=%d%n", expectedCount, actualCount);
// Example 3
Node existingMenu3 = new Node("a", 1);
Node existingMenu3b = new Node("b", 2);
Node existingMenu3c = new Node("c", 3);
Node existingMenu3d = new Node("d", 4);
existingMenu3.children = Arrays.asList(existingMenu3b);
existingMenu3b.children = Arrays.asList(existingMenu3c);
existingMenu3c.children = Arrays.asList(existingMenu3d);
Node newMenu3 = new Node("a", 1);
Node newMenu3e = new Node("e", 5);
Node newMenu3c = new Node("c", 3);
Node newMenu3d = new Node("d", 4);
newMenu3.children = Arrays.asList(newMenu3e);
newMenu3e.children = Arrays.asList(newMenu3c);
newMenu3c.children = Arrays.asList(newMenu3d);
expectedCount = 6;
actualCount = solution.countDifferentNodes(existingMenu3, newMenu3);
System.out.printf("Example 3 : expected=%d, actual=%d%n", expectedCount, actualCount);
// Example 4
Node existingMenu4 = new Node("c", 3);
Node existingMenu4g = new Node("g", 7);
existingMenu4.children = Arrays.asList(existingMenu4g);
Node newMenu4 = new Node("h", 8);
Node newMenu4g = new Node("g", 7);
newMenu4.children = Arrays.asList(newMenu4g);
expectedCount = 4;
actualCount = solution.countDifferentNodes(existingMenu4, newMenu4);
System.out.printf("Example 4 : expected=%d, actual=%d%n", expectedCount, actualCount);
}