fun main(args: Array<String>) {
val root = NormalNode(2)
root.node = NormalNode(3)
var result = insertNode(root, 4)
result = insertNode(result, 6)
normalNodePrint(result)
println("\nAfter deletion")
normalNodePrint(deleteNode(result, 4))
}
class NormalNode(val value : Int, var node : NormalNode? = null)
fun deleteNode(node : NormalNode?, value : Int) : NormalNode {
if(node == null)
return NormalNode(100)
var current = node
var prev : NormalNode? = null
while(current != null){
if(current.value == value){
prev?.node = current?.node
return node
}
prev = current
current = current?.node
}
return node
}
fun insertNode(node: NormalNode?, value: Int): NormalNode {
if (node == null) {
return NormalNode(value)
}
var current = node
while (current?.node != null) {
current = current?.node
}
current?.node = NormalNode(value)
return node
}
fun normalNodePrint(node : NormalNode){
var current = node
while(current.node != null){
print("${current.value} ")
current = current.node!!
}
print("${current.value}")
}
class BST(val value : Int, var left : BST? = null, var right : BST? = null)
fun insert(root : BST? = null, value : Int) : BST{
if(root == null)
return BST(value)
if(value < root.value){
root.left = insert(root.left, value)
} else {
root.right = insert(root.right, value)
}
return root
}
fun inOrderPrint(tree : BST?) {
if(tree == null)
return
print("${tree.value} ")
inOrderPrint(tree.left)
inOrderPrint(tree.right)
}