DoorDash | Phone Screen | Menu Tree
Anonymous User
2014

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?

  • Key is new
  • Value is different
  • Key has been deleted
  • A parent has been deleted

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);
}
Comments (4)