diff --git a/random.js b/random.js index f8012ad..1ffe418 100644 --- a/random.js +++ b/random.js @@ -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);