美文网首页
[复习]使用 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 重写二分搜索树(一)

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

  • 数据结构-集合和映射

    Set 不能存放重复元素接口方法 二分搜索树实现 借助前面的二分搜索树,可以很轻松的实现Set 链表实现 使用前面...

  • 用java实现二分搜索<算法分析>

    实验目的: 1、复习java编程;2、掌握二分搜索技术的基本原理;3、掌握使用java程序进行二分搜索的方法。 实...

  • [复习]二分搜索树(中)

    今天忙到很晚,所以今天就只弄了删除的部分,而且都只是只能删除一个,不能把相同的都删除;而且算法还不简单,改天改进:...

  • [复习]二分搜索树(上)

    昨天在做 leetCode 的题时,我发现可以使用搜索树来实现,于是今天就复习一下,现在这个版本是我凭着记忆写出来...

  • AVL 树

    一:什么是 AVL 树? 在我的上一篇文章《二分搜索树与二分查找法》中,详细介绍了二分搜索树这种数据结构。二分搜索...

  • 二分搜索树的遍历

    二分搜索树的遍历和二叉树的遍历是一致的(二分搜索树的实质本身就是一棵二叉树),直接使用二叉树的遍历即可.大一的时候...

  • AVL树,怎么维持平衡性?

    简介 首先AVL树是二分搜索树,如果不知道二分搜索树的童鞋,可以先百度了解一下二分搜索树的基本特征。 那么为什么要...

  • 算法与数据结构系列之[二分搜索树-上]

    前几篇介绍了二叉树以及二叉树的遍历,接下来三篇介绍下二分搜索树。 1.什么是二分搜索树 二分搜索树(Binary ...

  • 手敲数据结构——使用二分搜索树实现Set

    关于实现二分搜索树,可以看前面的文章 手敲数据结构——二分搜索树

网友评论

      本文标题:[复习]使用 kotlin 重写二分搜索树(一)

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