Tworzenie drzewa BST z tablicy

0

Hej,
moim zadaniem jest utworzenie drzewa BST z następującej tablicy: 9,2,1,4,7,11. Jakimi zasadami muszę się tutaj kierować ? Czy wystarczy posortować tablice (czy to w ogóle potrzebne?) i następnie po prostu normalnie dobrać te elementy (zgodnie z zasadami, "lewe mniejsze, prawe większe" itp.) ?

Z góry dzięki za odpowiedź.

1

Zrob drzewo i wrzucaj po kolei.

W sumie to masz nawet kod.

sealed trait Tree[+A] {
  def +[B >: A <% Ordered[B]](x: B): Tree[B]
}

case class Node[+A](value: A, left: Tree[A], right: Tree[A]) extends Tree[A] {
  def +[B >: A <% Ordered[B]](x: B) =
    if (x <= value) Node(value, left + x, right)
    else Node(value, left, right + x)

  override def toString =
    s"Tree(${value.toString}, ${left.toString}, ${right.toString})"
}

case object End extends Tree[Nothing] {
  def +[B <% Ordered[B]](x: B) = Node(x)

  override def toString = "."
}

object Node {
  def apply[A](value: A): Node[A] = Node(value, End, End)
}

object Tree {
  def apply[T <% Ordered[T]](l: List[T]): Tree[T] =
    l.foldLeft(End: Tree[T])((r, e) => r + e)
}

object Main extends App {
  val list = List(9,2,1,4,7,11)
  val tree = Tree(list)
  println(tree)
}

http://ideone.com/hwWZGY

1 użytkowników online, w tym zalogowanych: 0, gości: 1