Skip to content

Instantly share code, notes, and snippets.

@ridhof
Created November 12, 2018 23:53
Show Gist options
  • Save ridhof/6ccc642ec9317ace3108030db7de28e8 to your computer and use it in GitHub Desktop.
Save ridhof/6ccc642ec9317ace3108030db7de28e8 to your computer and use it in GitHub Desktop.
fun main(args: Array<String>) {
var boss = NodeString("H") //Menambahkan Node H sebagai parent utama
boss.left = NodeString("A") //Menambahkan Node A sebagai left child dari H
boss.right = NodeString("C") //Menambahkan Node C sebagai right child dari H
var templv2left = NodeString(boss.left) //Menyimpan Node A di sebuah variabel sementara
templv2left.left = NodeString("Z") //Menambahkan Node Z sebagai left child dari A
templv2left.right = NodeString("N", NodeString("D"), NodeString("F")) // Menambahkan Node N sebagai right child dari A, serta menambahkan Node D dan F sebagai child dari A.
boss.left = NodeString(templv2left) // Mengembalikan Node A yang ada di variabel sementara ke Left Node Parent
var templv2right = NodeString(boss.right) //Menyimpan Node C di sebuah variabel sementara
templv2right.left = NodeString("F") //Menambahkan Node F sebagai left child dari C
templv2right.right = NodeString("L", NodeString("R"), null) //Menambahkan Node L sebagai right child dari C, serta menambahkan Node R sebagai left child dari L
boss.right = NodeString(templv2right) //Mengembalikan Node C yang ada di variabel sementara ke Right Node Parent
printTreeString(boss, "R") //Mencari Node bernilai R pada variable tree bernama boss
}
class NodeString {
var value: String? = null
var left: NodeString? = null
var right: NodeString? = null
constructor(pValue: String?, pLeft: NodeString?, pRight: NodeString?){
value = pValue
left = pLeft
right = pRight
}
constructor(pValue: String?){
value = pValue
left = null
right = null
}
constructor(pNode: NodeString?){
if(pNode != null){
value = pNode.value
left = pNode.left
right = pNode.right
}
}
}
fun printNodeString(node: NodeString){
var value = node.value
var left = node.left
var right = node.right
println("Node dengan nilai $value memiliki node $left di kiri dan node $right di kanan")
}
fun printTreeString(node: NodeString?, key: String){
var (result, path) = printTreeAdvanceTreeString(node, key, "Node yang dilewati: ", "")
println(result)
println("Rute tercepat menggunakan DFS: $path")
}
fun printTreeAdvanceTreeString(node: NodeString?, key: String, pHasil: String, pPath: String): Pair<String,String>{
var hasil = pHasil
var path = pPath
if(node != null){
if(node.value != null){
var value = node.value
hasil = "$hasil $value"
if(key.toString() == hasil[hasil.length - 1].toString()) path = "$value $path"
if(node.left != null && key.toString() != hasil[hasil.length - 1].toString()){
var (hasilBaru, pathBaru) = printTreeAdvanceTreeString(node.left, key, hasil, path)
hasil = hasilBaru
path = pathBaru
if(key.toString() == hasil[hasil.length - 1].toString()) path = "$value $path"
}
if(node.right != null && key.toString() != hasil[hasil.length - 1].toString()){
var (hasilBaru, pathBaru) = printTreeAdvanceTreeString(node.right, key, hasil, path)
hasil = hasilBaru
path = pathBaru
if(key.toString() == hasil[hasil.length - 1].toString()) path = "$value $path"
}
}
}
return Pair(hasil, path)
}
//Copyright Tim("Ridho Febriansa", "Ian Kurniawan", "Daniel Susanto") Kecerdasan Buatan Ubaya 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment