Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1.  
  2. sealed trait BT[+A]
  3.  
  4. case object Empty extends BT[Nothing]
  5.  
  6. case class Node[+A](elem: A, left: BT[A], right: BT[A]) extends BT[A]
  7.  
  8. val t = Node(1, Node(2, Empty, Node(3, Empty, Empty)), Empty)
  9.  
  10. // Zadanie 1
  11.  
  12. def sumaBT[A](bt: BT[Int]): Int = bt match {
  13. case Node(elem, left, right) => elem + sumaBT(left) + sumaBT(right)
  14. case Empty => 0
  15. }
  16.  
  17. sumaBT(t)
  18.  
  19. // Zadanie 2
  20.  
  21. def foldBT[A,B](f: A => (B,B) => B)(acc:B)(bt:BT[A]):B = bt match {
  22. case Node(value, l, r) => f(value)(foldBT(f)(acc)(l), foldBT(f)(acc)(r))
  23. case Empty => acc
  24. }
  25.  
  26. def foldBT2[A,B](f: A => (B,B) => B)(acc:B)(bt:BT[A]):B = bt match {
  27. case Node(value, l, r) => foldBT2(f)(f(value)(foldBT(f)(acc)(l), foldBT(f)(acc)(r)))(bt)
  28. case Empty => acc
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement