【问题标题】:Is there any good tree manipulation (template) libraries for C++ out there?那里有任何用于 C++ 的好的树操作(模板)库吗?
【发布时间】:2009-11-25 02:09:32
【问题描述】:

有没有什么好的 C++ 树操作(模板)库可以做一些基本的事情,比如二叉树。

虽然从头开始写一棵二叉树并不难,但我真的很惊讶找到一个现成的树并不是那么容易。

【问题讨论】:

    标签: c++ tree


    【解决方案1】:

    树是graphs 的子集。那里有很多图形库,例如Boost Graph Library。您必须根据需要添加顶点,然后使用众多visitors 中的任何一个来遍历您的树。

    或者,您可以使用标准容器自定义制作一个(将根节点视为包含 2 个具有值的子节点,并且可能还有 2 个其他子节点)。

    【讨论】:

    • 是否有一个关于如何利用 BGL 实现例如二叉树的示例。由于它的抽象性,我无法使用它。
    • 我想不出具体的二叉树示例,但二叉树是有向图。下面是一个使用 DFS(深度优先搜索)的有向图搜索示例:boost.org/doc/libs/1_41_0/libs/graph/example/dfs-example.cpp
    【解决方案2】:

    你需要这棵树做什么? STL 或 Boost 中可能已经有一些东西可以满足您的需要。例如:STLstd::map<key,value> 通常实现为平衡二叉树。

    还有tree.hh,它实现了一个类似STL的n路树。

    【讨论】:

    • 仅仅因为 STL 映射是使用树实现的,并不意味着它提供了类似树的数据结构。
    【解决方案3】:

    ACE 有一个红黑树的实现。它相当容易使用。

    link text

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2010-10-29
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2010-11-15
      相关资源
      最近更新 更多