|
|
|
|
@ -30,40 +30,27 @@
|
|
|
|
|
//return results.concat(breakDown(nextNum))
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
const breakDown = (num)=>{
|
|
|
|
|
const results = [];
|
|
|
|
|
|
|
|
|
|
let firstResult = num - 3;
|
|
|
|
|
if(firstResult > 3){
|
|
|
|
|
firstResult = breakDown(firstResult);
|
|
|
|
|
const breakDown = (node)=>{
|
|
|
|
|
if(node.value > 3){
|
|
|
|
|
node.left = { value: 3 }
|
|
|
|
|
node.right = breakDown({value:node.value-3})
|
|
|
|
|
}
|
|
|
|
|
const firstArray = [3, firstResult];
|
|
|
|
|
results.push(firstArray);
|
|
|
|
|
return node;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const tree = breakDown({value:8});
|
|
|
|
|
|
|
|
|
|
let secondResult = num - 2;
|
|
|
|
|
if(secondResult > 3){
|
|
|
|
|
secondResult = breakDown(secondResult);
|
|
|
|
|
}
|
|
|
|
|
const secondArray = [2, secondResult];
|
|
|
|
|
results.push(secondArray);
|
|
|
|
|
|
|
|
|
|
console.log(tree);
|
|
|
|
|
|
|
|
|
|
return results;
|
|
|
|
|
}
|
|
|
|
|
const result = breakDown(7);
|
|
|
|
|
console.dir(result, {depth:null});
|
|
|
|
|
|
|
|
|
|
const traverse = (tree)=>{
|
|
|
|
|
let result = '';
|
|
|
|
|
for(let node of tree){
|
|
|
|
|
if(Number.isInteger(node)){
|
|
|
|
|
result += node + ', ';
|
|
|
|
|
} else {
|
|
|
|
|
result += traverse(node);
|
|
|
|
|
}
|
|
|
|
|
const getLeaves = (node, leafArray)=>{
|
|
|
|
|
if(node.left === undefined && node.right === undefined){
|
|
|
|
|
leafArray.push(node.value);
|
|
|
|
|
} else {
|
|
|
|
|
getLeaves(node.left, leafArray)
|
|
|
|
|
getLeaves(node.right, leafArray)
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
return leafArray;
|
|
|
|
|
}
|
|
|
|
|
const flattenedTree = traverse(result);
|
|
|
|
|
console.log(flattenedTree);
|
|
|
|
|
const leaves = getLeaves(tree, []);
|
|
|
|
|
|
|
|
|
|
console.log(leaves);
|
|
|
|
|
|