tree

by Vladymyr Shevchuk

JavaScript

const tree = {
  data: [{a:1}, {b:2}, {c:3}, {d:4}, {e:5}],
  next: {
    data: [{a:1}, {b:2}, {c:3}],
    next: {
      data: [{a:1}],
      next: null
    }
  }
};

function goTo(tree, n) {
  let result;
  let iterator = n - 1;
  
  if (n === 1) {
    return tree.data;
  }
  
  
  while(iterator--) {
    if (!result) {
      result = tree.next;
    } else {
      if (result.next) {
        result = result.next
      } else {
        throw new Error('next does not exist');
      }
    }
  }
  
  return result.data;
}


function redo() {
  return goTo(tree, n);
}

function undo() {
  
}

console.log(goTo(tree, 1));
console.log(goTo(tree, 2));
console.log(goTo(tree, 3));

console.log(goTo(tree, 4));
console.log(goTo(tree, 0));