| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- 'use strict'
 
- /**
 
-  * Definition for binary tree with next pointer.
 
-  * function TreeLinkNode(val) {
 
-  *     this.val = val;
 
-  *     this.left = this.right = this.next = null;
 
-  * }
 
-  */
 
- function TreeLinkNode(val) {
 
-     this.val = val
 
-     this.left = this.right = this.next = null
 
- }
 
- /**
 
-  * @param {TreeLinkNode} root
 
-  * @return {void} Do not return anything, modify tree in-place instead.
 
-  */
 
- // var connect = function (root) {
 
- //     if (root === null) {
 
- //         return
 
- //     }
 
- //     let curr = root
 
- //     let prev = null
 
- //     let queue = []
 
- //     queue.push({
 
- //         node: curr,
 
- //         level: 1
 
- //     })
 
- //     while (queue.length !== 0) {
 
- //         let q = queue[0]
 
- //         queue = queue.slice(1)
 
- //         if (prev !== null && prev.level === q.level) {
 
- //             prev.node.next = q.node
 
- //         }
 
- //         prev = q
 
- //         if (q.node.left !== null) {
 
- //             queue.push({
 
- //                 node: q.node.left,
 
- //                 level: q.level + 1
 
- //             })
 
- //         }
 
- //         if (q.node.right !== null) {
 
- //             queue.push({
 
- //                 node: q.node.right,
 
- //                 level: q.level + 1
 
- //             })
 
- //         }
 
- //     }
 
- // }
 
- // It is a FULL BST, so we can use some tricky method
 
- var connect = function(root) {
 
-     if (root === null) return
 
-     connectHelper(root.left, root.right)
 
-     connectHelper(root.right, null)
 
- }
 
- function connectHelper(node, next) {
 
-     if (node === null) return
 
-     node.next = next
 
-     // NOTE: All values are truthy unless they are defined as falsy
 
-     // If next === null, && return false, false || null => null;
 
-     // else && return next.left, next.left || null => next.left
 
-     let nextRight = next && next.left || null
 
-     connectHelper(node.left, node.right)
 
-     connectHelper(node.right, nextRight)
 
- }
 
- function __main__() {
 
-     /*eslint no-console: ["error", { allow: ["log"] }] */
 
-     let logger = console.log.bind(console)
 
-     //       1
 
-     //      / \
 
-     //     2   3
 
-     //    /\   /\
 
-     //   4  5 6  7
 
-     let n7 = new TreeLinkNode(7)
 
-     let n6 = new TreeLinkNode(6)
 
-     let n5 = new TreeLinkNode(5)
 
-     let n4 = new TreeLinkNode(4)
 
-     let n3 = new TreeLinkNode(3)
 
-     n3.left = n6
 
-     n3.right = n7
 
-     let n2 = new TreeLinkNode(2)
 
-     n2.left = n4
 
-     n2.right = n5
 
-     let n1 = new TreeLinkNode(1)
 
-     n1.left = n2
 
-     n1.right = n3
 
-     connect(n1)
 
-     logger(n1.next)
 
-     logger(n2.next)
 
-     logger(n4.next)
 
-     logger(n5.next)
 
- }
 
- __main__()
 
 
  |