[复习]使用 kotlin 重写二分搜索树(一)

前两天使用 js 编写的时候,我发现很陌生,于是我使用 kotlin 重新实现一次,由于时间的原因暂时先实现添加的操作:


class SearchTree> {
    data class Node>(val e: T, var left: Node?, var right: Node?)
    private var root: Node? = null
    private var size = 0
    fun size(): Number = size
    fun isEmpty():Boolean = root == null
    fun add(e: E) {
        root = add(root, e)
        size++
    }
    private fun add(node: Node?, e: E): Node {
        if (node == null) {
            return Node(e, null, null)
        }
        if (node.e < e) {
            node.right = add(node.right, e)
        } else if (node.e > e) {
            node.left = add(node.left, e)
        }
        return node
    }

    fun removeMax(): Boolean {
        if (size == 0 || root == null) {
            return false
        }
        removeMax(root!!)
        return true
    }
    private fun removeMax(node: Node): Node? {
        if(node.right == null) {
            return node.left
        }
        return removeMax(node.right!!)
    }


    private fun print(node: Node?, str: String) {
        if (node == null) {
            return
        }
        print(node.right, str)
        str.plus("${node.e},")
        print(node.left, str)
    }

    override fun toString(): String {
        val str = ""
        print(root, str)
        return str
    }
}

其中打印的字符串操作还存在问题,由于我的 kotlin 还不熟练,所以这还没解决,改天会完善,同时学习数据结构和 kotlin 。实现算法思路跟使用 js 的相同,这次我是跟着教学视频来进行的。

你可能感兴趣的:([复习]使用 kotlin 重写二分搜索树(一))