搜索二叉树结构?
来源:5-6 层序遍历(广度优先遍历)
挣钱吃饭
2021-06-29
老师定义的BST结构中,对于数值的定义,为啥同时有key和value?一般情况下,我看到的其他人更多的节点情况是只是定义了vaule。
写回答
1回答
-
liuyubobobo
2021-06-29
首先,不是“只定义了vaule”。如果二叉树不存 key 和 value 的话,存的那一个值是 key。
其次,一个数据结构,存储 key-value 数值对,即键值数据对,叫映射;不存数据对,只存一个数据,叫集合。
二叉树既可以用于实现映射,也可以用于实现集合。这是二叉树的两种不同应用。
放在标准库中,C++ 语言里,set 就是以二叉树为基础(实际上是红黑树)实现的集合;map 就是以二叉树为基础(实际上是红黑树)实现的映射;
Java 语言里,TreeSet 就是以二叉树为基础(实际上是红黑树)实现的集合;TreeMap 就是以二叉树为基础(实际上是红黑树)实现的映射;
在具体实现上,集合的实现可以看做是在映射实现基础上添加一层。因为映射存储的是键值数据对,对于集合来说,不过是没有"值",所有的键对应的值填“空”即可。(当然,你可以可以完全把 node 结构的 value 扔掉,重新实现一遍二叉树。)
对于这种数据结构的更具体的说明,在我的体系课程中介绍的更清晰。如果有兴趣可以参考:https://class.imooc.com/sale/datastructure
继续加油!:)
112021-06-29
相似问题