Skip to content

Instantly share code, notes, and snippets.

@tvolk131
Created July 20, 2017 16:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tvolk131/b2224ce7f9750176624f4a932a5c1aae to your computer and use it in GitHub Desktop.
Save tvolk131/b2224ce7f9750176624f4a932a5c1aae to your computer and use it in GitHub Desktop.
Interview Practice Problem
const findLargestLevel = function(node) {
var getAllNodeSums = function(node, nodeSums) {
nodeSums.set(node, getNodeSum(node));
for(var i = 0; i < node.children.length; i++) {
getAllNodeSums(node.children[i], nodeSums);
}
}
var getNodeSum = function(node) {
var sum = node.value;
for(var i = 0; i < node.children.length; i++) {
sum += getNodeSum(node.children[i]);
}
return sum;
}
var nodeSums = new Map();
getAllNodeSums(node, nodeSums);
var greatestNode = node;
var greatestNodeValue = nodeSums.get(node);
for(var nodeKey in nodeSums) {
if(nodeSums.get(nodeKey) > greatestNodeValue) {
greatestNode = nodeKey;
greatestNodeValue = nodeSums.get(nodeKey);
}
}
return greatestNode;
};
class Tree {
constructor(value) {
this.value = value;
this.children = [];
}
appendChild(tree) {
this.children.push(tree);
}
}
var assert = function(val1, val2) {
if(val1 === val2) {
console.log('Passed');
} else {
console.log('Failed - Expected ' + val1 + ' to equal ' + val2);
}
}
var tree = new Tree(4);
tree.appendChild(new Tree(2));
tree.children[0].appendChild(new Tree(-3));
assert(findLargestLevel(tree), tree);
tree.children[0].children[0].appendChild(new Tree(4));
assert(findLargestLevel(tree), tree);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment