Advertisement
finalmail

binary trees TA 14

Nov 20th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const arr = [1, 2, 3, 4, 5, 6, 7, 8]
  2. // const sorted = [5, 3, 7, 2, 4, 6, 8, 1]
  3.  
  4. let root = null
  5.  
  6. const addNodeLevelWise = value => {
  7.     const newNode = {
  8.         value,
  9.         left: null,
  10.         right: null,
  11.     }
  12.  
  13.     if (!root) {
  14.         root = newNode
  15.         return true
  16.     }
  17.  
  18.     let nodeToAddTo = root
  19.     const q = [nodeToAddTo]
  20.  
  21.     while (q.length > 0) {
  22.         nodeToAddTo = q.shift()
  23.         if (!nodeToAddTo.left) {
  24.             nodeToAddTo.left = newNode
  25.             break
  26.         }
  27.         q.push(nodeToAddTo.left)
  28.         if (!nodeToAddTo.right) {
  29.             nodeToAddTo.right = newNode
  30.             break
  31.         }
  32.         q.push(nodeToAddTo.right)
  33.     }
  34. }
  35.  
  36. arr.forEach(value => {
  37.     addNodeLevelWise(value)
  38. })
  39.  
  40. const preOrder = node => {
  41.     if (!node) {
  42.         return
  43.     }
  44.  
  45.     preOrder(node.left)
  46.     process.stdout.write(node.value + ' ')
  47.     preOrder(node.right)
  48. }
  49.  
  50. console.log('root', root)
  51. preOrder(root)
  52. // recursive preorder?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement