美文网首页
[复习]使用 kotlin 重写二分搜索树(一)

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

作者: 吴敬悦 | 来源:发表于2021-03-25 23:08 被阅读0次

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

    
    class SearchTree<E: Comparable<E>> {
        data class Node<T: Comparable<T>>(val e: T, var left: Node<T>?, var right: Node<T>?)
        private var root: Node<E>? = 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: E): Node<E> {
            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<E>): Node<E>? {
            if(node.right == null) {
                return node.left
            }
            return removeMax(node.right!!)
        }
    
    
        private fun print(node: Node<E>?, 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 重写二分搜索树(一)

          本文链接:https://www.haomeiwen.com/subject/nmddhltx.html