Advertisement
vit134

Калькулятор из дерева (Яндекс)

Nov 9th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Написать калькулятор, в котором есть знаки сложения и умножения
  3.     Написать функцию, которая принимает на вход бинарное дерево математических операций (для простоты могут быть только + и *). Функция возвращает результат выражения. Нельзя использовать внутренние функции языка для подсчета, например, eval.
  4.  
  5. */
  6.  
  7.  
  8. // подготовка данных
  9. class Node {
  10.   constructor(v, l, r) {
  11.     Object.assign(this, { v, l, r });
  12.   }
  13. }
  14.  
  15. const n1 = new Node(4);
  16. const n2 = new Node(5);
  17. const n3 = new Node('+', n1, n2);
  18. const n4 = new Node(3);
  19. const n5 = new Node('*', n3, n4);
  20.  
  21.  
  22. function calc(node) {
  23.   const { v, l, r } = node;
  24.  
  25.   console.log(v);
  26.  
  27.   switch (v) {
  28.     case '+': return calc(node.l) + calc(node.r);
  29.     case '-': return calc(node.l) - calc(node.r);
  30.     case '*': return calc(node.l) * calc(node.r);
  31.     case '/': return calc(node.l) / calc(node.r);
  32.     default: return v;
  33.   }
  34. }
  35.  
  36. //console.log(n1, n2, n3, n5)
  37.  
  38. console.log(calc(n5))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement