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));