一般n-叉树的C++实现

    C++的标准模板库中并没有n-叉树的实现,boost库中到目前为止也没有这样的作品。这里要介绍的由德国人Kasper Peeters实现的n-叉树C++模板,经过长期持续不断的修正,该n-叉树的C++模版已经非常完善,值得一用。关于这个软件可访问网站http://tree.phi-sci.com/。下面是库文档tree.pdf的翻译,不确之处敬请斧正。

tree.hh文档

Kasper Peeters

kasper.peeters@gmail.com

摘要

基于C++的tree.hh库提供了针对n-叉树的类STL容器,并对存储于节点内的数据实现了模板化。库提供了不同的迭代器类型,比如前序、后序或其它方式,访问方法和STL尽可能保持一致,并有相应的算法可供选用。

代码和例子可访问网站http://tree.phi-sci.com/

注意这个文档并不能完全涵盖库的内容,若想了解库的所有成员请参考头文件tree.hh。

1. 概述

1.1 容器类

tree.hh的树类是一个秉承STL精神的模板化的容器类。它是通过所谓的n-叉树来组织数据,每个节点连接任意数量的孩子节点。同级的节点互称“兄弟节点”,给定节点下面的节点称为“孩子节点”,而该节点称为这些孩子节点的“父节点”。在树的顶端有多个节点,它们都没有父亲,这些节点的集合称为树的头。见图1(习惯上旋转90度)。

图1 树结构概览

树类对于存储于节点内的数据做了模板化,就像你原来可以vector<string>而现在可以tree<string>。许多工作在数据结构上的STL算法,作为必要的选择这里也提供了。

先序 (默认)

在孩子节点之前

pre_order_iterator

root A B C D E F

后序

在孩子节点之后

post_order_iterator

B C A E F D root

广度优先

 

breadth_first_iterator

root A D B C E F

兄弟

仅遍历兄弟

sibling_iterator

(例如) A D

固定深度

 

fixed_depth_iterator

(例如) A D

叶子

 

leaf_iterator

B C E F

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值