搜索二叉树结构?

来源: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


继续加油!:)

1
1
挣钱吃饭
懂了。
2021-06-29
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程