Created
November 12, 2018 23:53
-
-
Save ridhof/6ccc642ec9317ace3108030db7de28e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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