var connect = function(root) { if(!root) return root const list = [[root]], resList = [] const dfs = (root, list, count = 1) => { if(!root || (!root.left && !root.right)) return const current = list[count] = list[count] ? list[count] : [] if(root.left) { current.push(root.left) } if(root.right) { current.push(root.right) } dfs(root.left, list, count + 1) dfs(root.right, list, count + 1) } dfs(root, list) for(let i = 0; i < list.length; i++) { for(let j = 0; j < list[i].length; j++) { list[i][j].next = list[i][j + 1] ? list[i][j + 1] : null } } return root};