Advertisement
vit134

Инвертировать бинарное дерево (Яндекс)

Nov 9th, 2018
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Инвертировать бинарное дерево
  3. */
  4.  
  5. var inTree = {
  6.   left: {
  7.     v: 4,
  8.     left: {
  9.       v: 1,
  10.       left: null,
  11.       right: null
  12.     },
  13.     right: {
  14.       v: 3,
  15.       left: null,
  16.       right: null
  17.     },
  18.     v: 2
  19.   },
  20.   right: {
  21.     left: {
  22.       v: 6,
  23.       left: null,
  24.       right: null
  25.     },
  26.     right: {
  27.       v: 9,
  28.       left: null,
  29.       right: null
  30.     },
  31.     v: 7
  32.   },
  33.   v: 4
  34. }
  35.  
  36. function invertTree (node) {
  37.   if (node == null) return null;
  38.   let q = [node];
  39.  
  40.   while(q.length > 0) {
  41.     let cur = q.shift();
  42.     let tmp = cur.left;
  43.  
  44.     cur.left = cur.right;
  45.     cur.right = tmp;
  46.    
  47.     if (cur.left !== null) q.push(cur.left)
  48.     if (cur.right !== null) q.push(cur.right)
  49.   }
  50.  
  51.   return node
  52. }
  53.  
  54. console.log(invertTree(inTree));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement