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