【问题标题】:Balanced Binary Search Tree Implementation平衡二叉搜索树实现
【发布时间】:2016-03-14 07:37:44
【问题描述】:

如果STL map,set在内部使用平衡二叉搜索树实现,是不是不能用map或者set来表示BBST?

我需要 BBST 数据结构,我可以不使用任何提到的关联容器来实现它还是从头开始?

谢谢

【问题讨论】:

  • 视情况而定。你试图解决的问题是什么?用例是什么?如果std::mapstd::set 符合您的要求,那么一定要使用它们,否则不要试图将它们硬塞到它们并不真正适合的地方。最后,如果您应该创建一棵树作为学校作业或类似任务的一部分,那么您当然应该创建自己的结构和功能。
  • 您对 BBST 有什么特别的兴趣?

标签: c++


【解决方案1】:

数据结构是一棵红黑树,它是自我平衡的,并保证您有O(log(n)) 时间进行搜索/插入/删除。如果您需要超出 map 支持的操作(例如 rank 和 select),您将需要实现自己的树,否则您可以使用 map。

【讨论】:

  • 我很难理解的是如何通过 map/multimap 来表示父子关系?我可以在地图中存储表示树中层次结构的元素并将它们打印为树结构吗?我希望我设法解释了我的困惑?
  • @user1355185,没有。子/父节点关系信息被封装。对于给定的节点,您既无法知道哪个节点是父节点,也无法知道它有哪些子节点。
  • 由于“black”一词在 C++ 标准(11 和 14)中恰好出现 0 次,你如何证明映射和集合是红黑树的论点?实现的作用与标准要求的内容没有关系。
  • @paxdiablo 文档指出它通常用红黑树实现 en.cppreference.com/w/cpp/container/map
  • 文档到底是什么? cppreference 网站几乎不是权威来源,现在更是如此,因为它引入了自己的偏见。不,我想我更愿意自己依靠标准。无论如何,这与“...通常实现为”和您的论点“数据结构 ...”相去甚远,所以我建议您澄清一下那。这与那些声称 qsort 是快速排序的人没有什么不同,但事实上,就 C 标准 gores 而言,它可能像冒泡排序一样脑残。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多