Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const pathSum = (root, sum) => {
- if(!root) return 0;
- let leafCountSet = new Set();
- let pathsSet = new Set();
- const checkSum = (valSeqs, pathSeqs, sum) => {
- const vals = valSeqs.slice(0, valSeqs.length - 1).split(',');
- const paths = pathSeqs.slice(0, pathSeqs.length - 1).split(',');
- const sums = [];
- const pathsStrs = [];
- vals.forEach( (val, key) => {
- for (let i = 0; i <= key; i++) {
- if(typeof(sums[i]) === 'undefined') {
- sums[i] = parseInt(val, 10);
- } else {
- sums[i] += parseInt(val, 10);
- }
- if(sums[i] === sum) {
- // console.log('df');
- const pathStr = paths.slice(i, key).join('-');
- const sumsStr = sums.join('-');
- pathsStrs.push(pathStr + '-' + sumsStr);
- }
- }
- })
- // console.log('vals', valSeqs);
- // console.log('pathSeqs', pathSeqs);
- return pathsStrs;
- }
- const recursivePath = (root, sum, valSeqs = '', pathSeqs='', key='') => {
- if(root == null) {
- const sumId = checkSum(valSeqs, pathSeqs, sum);
- if(typeof(sumId) !== 'undefined') {
- sumId.forEach( path => leafCountSet.add(path))
- }
- // console.log('valSeqs', valSeqs);
- pathsSet.add(valSeqs);
- return;
- }
- if(key) pathSeqs += key + ',';
- if(typeof(root.val) !== 'undefined') {
- valSeqs += root.val + ',';
- }
- recursivePath(root.right, sum, valSeqs, pathSeqs, 'right');
- recursivePath(root.left, sum, valSeqs, pathSeqs, 'left');
- }
- recursivePath(root, sum);
- console.log(leafCountSet);
- // console.log('-----------');
- console.log('valSeqs', pathsSet);
- return leafCountSet.size;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement