Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sealed trait BT[+A]
- case object Empty extends BT[Nothing]
- case class Node[+A](elem: A, left: BT[A], right: BT[A]) extends BT[A]
- val t = Node(1, Node(2, Empty, Node(3, Empty, Empty)), Empty)
- // Zadanie 1
- def sumaBT[A](bt: BT[Int]): Int = bt match {
- case Node(elem, left, right) => elem + sumaBT(left) + sumaBT(right)
- case Empty => 0
- }
- sumaBT(t)
- // Zadanie 2
- def foldBT[A,B](f: A => (B,B) => B)(acc:B)(bt:BT[A]):B = bt match {
- case Node(value, l, r) => f(value)(foldBT(f)(acc)(l), foldBT(f)(acc)(r))
- case Empty => acc
- }
- def foldBT2[A,B](f: A => (B,B) => B)(acc:B)(bt:BT[A]):B = bt match {
- case Node(value, l, r) => foldBT2(f)(f(value)(foldBT(f)(acc)(l), foldBT(f)(acc)(r)))(bt)
- case Empty => acc
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement