reverse even in tree

by Diana Lemen

JavaScript

const data = {data: 1, next: {data: 2, next: {data: 8, next: {data:9, next: {data:12, next:{data: 16}}}}}};

const data2= {
	data: 2, next: {data: 18, next: {data: 24, next: {data:3, next: {data:5, next:{data: 7, next: {data: 9, next: {data: 6, next: { data: 12 }}}}}}}}
}

function traverse (head, listValues) {
  listValues.push(head.data);
  let node = head.next; 
  if(head.next) traverse(node, listValues);
}

function reverse(head) {
  const listValues = [];
  traverse(head, listValues);
  const evenValuesMap = {};
 
 	let first;
  
  for(let i = 0; i < listValues.length; i++) {
    if(listValues[i] % 2 === 0) {
      if(!first) first = '' + i;
      evenValuesMap[first] = evenValuesMap[first] ? [...evenValuesMap[first], listValues[i]]: [listValues[i]];
    } else {
    	prev = undefined;
      first = undefined;
    }
  }

  Object.entries(evenValuesMap).map(([key, value]) => {
    for(let i = value.length - 1; i >= 0; i--) {
      listValues[+key + value.length - 1 - i] = value[i];
    }
  })

  return listValues;
}

console.log(reverse(data));
console.log(reverse(data2));