sum

by krustnic

JavaScript

const source = {
  value: 4,
  next: [
    {
      value: 3,
      next: [
      	{
          value: 3,
          next: [
            {
              value: 7,
              next: [
                {
                  value: 3,
                  next: []
                },
              ]
            },
          ]
        },
        {
          value: 7,
          next: [
          	{
              value: 3,
              next: []
            },
          ]
        },
      ]
    },
    {
      value: 3,
      next: []
    }
  ]
}

function sum(data) {
  
	if (data.next.length === 0) {  	
  	return data.value
  }
  
  let s = data.value
  
  for(let i=0; i<data.next.length; i++) {
  	s += sum(data.next[i])
  }
  
  return s
}

function sum2(data) {
	let s = 0
	const queue = []
  
  queue.push(data)
  
  while(queue.length !== 0) {
  	const top = queue[0]
    
  	for(let i=0; i<top.next.length; i++) {
    	queue.push(top.next[i])
    }
    
    const leave = queue.shift()
    console.log(leave.value)
  	s += leave.value  
  }
  
  return s
}

console.log(sum(source))
console.log(sum2(source))