Advertisement
Guest User

Untitled

a guest
Sep 1st, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. object Solution extends App {
  2. val n = readInt
  3. //recommended
  4.  
  5. def isBST(curNodes: List[Int]): Boolean = {
  6. curNodes match {
  7. case root :: Nil => true
  8. case Nil => true
  9. case root :: nodes =>
  10. val leftNodeIndex = nodes.indexWhere(_ < root)
  11. val rightNodeIndex = nodes.indexWhere(_ > root)
  12. val leftNodes = if (leftNodeIndex < 0) Nil else if (rightNodeIndex > 0) nodes.slice(leftNodeIndex, rightNodeIndex) else nodes.slice(leftNodeIndex, curNodes.size - 1)
  13. val rightNodes = if (rightNodeIndex < 0) Nil else nodes.slice(rightNodeIndex, curNodes.size - 1)
  14.  
  15. !leftNodes.exists(_ > root) && isBST(leftNodes) && !rightNodes.exists(_ < root) && isBST(rightNodes)
  16.  
  17. case _ => false
  18. }
  19. }
  20.  
  21. // (1 to n).map(i => readLine.split(" ").map(_.toInt).sum).foreach(println)
  22.  
  23. (1 to n).foreach { i =>
  24. readLine
  25. println(if(isBST(readLine.split(" ").map(_.toInt).toList)) "YES" else "NO")
  26. }
  27.  
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement