【问题标题】:Can red-black tree contain nodes with the same key? [duplicate]红黑树可以包含具有相同键的节点吗? [复制]
【发布时间】:2018-02-19 15:18:53
【问题描述】:

我正在尝试实现一个简单的红黑树。树的节点包含 key:int 和 value:string 的字段。我还没有看到存储在树中的相同键的示例。 但是 C++ 中的 multimap 类或 Java 中的 TreeMap 使用红黑树,它可以存储两个或多个相同的键。 那么,红黑树是否只存储唯一键?关于这个或通用定义是否有任何严格的规则? P.S.:恕我直言,因为红黑树是二叉搜索树,所以它不能存储重复的键,因为二叉搜索树根据定义只存储唯一值。

【问题讨论】:

    标签: c# data-structures tree treemap multimap


    【解决方案1】:

    BST definition

    每个节点中的key必须大于或等于左子树中存储的任何key,并且小于或等于右子树中存储的任何key

    因此,BST 允许重复键。

    如果你看一下insert operation,有一行决定是插入到左边(key 小于)还是右边(key 大于或等于)。因此,插入重复键没有问题。

    当一个键遍历一棵树时,它可以很容易地找到给定键的所有值。

    【讨论】:

    • 谢谢!所以在我的红黑树实现中,我需要找到一种方法来正确插入和存储具有相同键的节点?
    • 对左/右子树使用相同的插入逻辑,只需选择哪个应该保留相等的键。一旦找到叶子,就会插入密钥,同时修复红黑属性。
    猜你喜欢
    • 2014-01-13
    • 2011-09-18
    • 1970-01-01
    • 2022-12-10
    • 2011-04-23
    • 1970-01-01
    • 2015-11-17
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多