// ---- some useful fn to do with linked_list ----
/**
* create tree node through tree array
* this way supports three level tree temperaryly
* becalse most test case in leetcode is less than 3 level.
* input: [3, 9, 20, 6, null, 15, 7]
* output:
3
/ \
9 20
/ / \
6 15 7
*/
function createTree(treeArr) {
function TreeNode(val) {
this.val = val
this.left = this.right = null
}
const cacheObj = {}
for (let i = 0; i < treeArr.length; i++) {
cacheObj[`tree${i}`] = typeof treeArr[i] === 'number' && new TreeNode(treeArr[i])
}
for (let i = 0; i < treeArr.length; i++) {
cacheObj[`tree${2 * i + 1}`] && (cacheObj[`tree${i}`].left = cacheObj[`tree${2 * i + 1}`])
cacheObj[`tree${2 * i + 2}`] && (cacheObj[`tree${i}`].right = cacheObj[`tree${2 * i + 2}`])
}
return cacheObj['tree0']
}