// kotlin
data class Node(val data:Int, val children: ArrayList<Node>)
// java
public class Node {
public int data;
public ArrayList<Node> children;
}
public class Node {
public int data;
public Node left;
public Node right;
}
public class Node {
public int data;
public Node child;
}
data class Node(val data:Int?, val left: Node?, val right: Node?)
fun getNodeOrNull(node : Node, data: Int): Node? {
if(node == null) return null
if(node.data == data) return node
if(data < node.data!!) {
return getNodeOrNull(node.left!!, data)
}
return getNodeOrNull(node.right!!, data)
}
package com.example.basesyntax
fun main() {
var rootNode = Node(6)
val bst = BST()
bst.insert(rootNode, 4)
bst.insert(rootNode, 2)
bst.insert(rootNode, 1)
bst.insert(rootNode, 3)
bst.insert(rootNode, 10)
bst.insert(rootNode, 5)
bst.insert(rootNode, 8)
bst.insert(rootNode, 7)
bst.insert(rootNode, 9)
bst.insert(rootNode, 15)
bst.insert(rootNode, 12)
println(rootNode)
println("---")
bst.remove(rootNode, 10)
println(rootNode)
}
data class Node(var data: Int?, var left: Node? = null, var right : Node? = null)
class BST {
fun insert(node : Node?, data: Int): Node? {
if(node == null) {
return Node(data)
}
if(node.data!! > data) {
node.left = insert(node.left, data)
}
else {
node.right = insert(node.right, data)
}
return node
}
fun remove(node : Node?, data: Int) : Node? {
if(node == null) return null
if(node.data!! > data) {
node.left = remove(node.left, data)
}
else if(node.data!! < data){
node.right = remove(node.right, data)
}
else {
if(node.right == null) return node.left
else if(node.left == null) return node.right
val minValue = findMinValue(node.left)
node.data = minValue
node.left = remove(node.left, minValue)
}
return node
}
fun findMinValue(node: Node?) : Int {
var currnetValue = node?.data ?: throw NoSuchElementException("BST Element is Empty")
var currnetNode = node
while(currnetNode?.right != null) {
currnetValue = node.right!!.data!!
currnetNode = node.right
}
return currnetValue
}
}
본 내용은 Udemy의 알고리듬 및 자료구조(Java)강의를 듣고 정리한 내용입니다.