flat tree with empties
by Diana Lemen
JavaScript
const tree = {
value: 1,
left: {
value: 2,
left: {
value: 4,
left: {
value: 6,
left: null,
right: null
},
right: {
value: 7,
left: null,
right: {
value: 9,
left: {
value: 10,
left:null,
right: null
},
right: null
}
}
},
right: null
},
right: {
value: 3,
left: null,
right: {
value: 5,
left: {
value: 8,
left: null,
right: null
},
right: null
}
}
}
const storage = {};
function traverseTree (node, obj, depth) {
const value = node ? node.value : node
obj[depth] = obj[depth] ? [...obj[depth], value] : [value];
if(node) traverseTree(node.left, obj, depth + 1);
if(node) traverseTree(node.right, obj, depth + 1);
}
const serialize = (stor) => {
return Object.entries(stor).reduce((acc, [key, val]) => {
if(val.find(item => item !== null)) {
return [...acc, ...val].map(item => item + '');
}
return acc.join(',');
}, []);
}
traverseTree(tree, storage, 1);
const serialized = serialize(storage);
const deserialize = (serializedTree) => {
const arr = serializedTree.split(',');
const tree = {};
for(let i = 0; i < arr.lenght; i++) {
}
}
console.log(serialized);