OneCompiler

BST basic

173
 fun main(args: Array<String>) {
  var root : TreeNode = TreeNode(5)
  var result : TreeNode = insert(root, 7)
  result = insert(result, 3).let {
    insert(it,67)
    insert(it,80)
    insert(it,24)
  }
  inorderTraversal(result)
  println("")
  preorderTraversal(result)
  println("")
  postorderTraversal(result)
    
}

class TreeNode(val value : Int, var left : TreeNode ? = null, var right : TreeNode? = null)

fun insert(root : TreeNode? = null, value : Int) : TreeNode {
  if(root == null){
    return TreeNode(value)
  }
  if(value < root.value) {
    root.left = insert(root.left, value)
  } else {
    root.right = insert(root.right, value)
  }
  return root
}

fun inorderTraversal(root: TreeNode?) {
    if (root != null) {
        inorderTraversal(root.left)
        print("${root.value} ")
        inorderTraversal(root.right)
    }
}

fun preorderTraversal(root: TreeNode?) {
    if (root == null) return
    print("${root.value} ")
    preorderTraversal(root.left)
    preorderTraversal(root.right)
}

fun postorderTraversal(root: TreeNode?) {
    if (root == null) return
    preorderTraversal(root.left)
    preorderTraversal(root.right)
    print("${root.value} ")
}