part-whole

通过树形结构的构造,进行组合设计模式(Composite)的实现:

// Node作为基类
// 本身不持有数据,用于维护共同的节点结构
class Node
{
public:virtual ~Node() {}protected:Node(size_t id, boost::shared_ptr<Node> p):_parent(p), _id(id){}// 通过构造函数传递进来的父类指针建立与其他节点的关系boost::shared_ptr<Node> _parent;size_t _id;size_t _level;
};
class Record;
class LeafNode :public Node
{
public:LeafNode(const boost::shared_ptr<Record>& r, size_t id = 0, const boost::shared_ptr<Node>& p = boost::shared_ptr<Node>());
private:boost::shared_ptr<Record> _data;
};
class InternalNode :public Node
{
private:std::vector<boost::shared_ptr<Node>> _data;
};

两颗子树的 joinWith(merge)

class HClustering
{
public:HClustering(const shared_ptr<Node>& root):_root(root){}boost::shared_ptr<Node> joinWith(HClustering& hc, double joinVal){// 需要new 出来一个新的节点// 然后交给智能指针管理Node* p = new Node(joinVal);boost::shared_ptr<Node> node(p);_root->set_parent(node);hc.root()->set_parent(node);p->add(_root);p->add(hc.root());return node;}
private:boost::shared_ptr<Node> _root;
};

树——一种数据结构(二)相关推荐

  1. java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)

    常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...

  2. 数据结构---二叉平衡排序树的删除

    数据结构-二叉平衡排序树的删除 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct avlT ...

  3. 数据结构---二叉线索树

    数据结构-二叉线索树 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct bmTree {i ...

  4. Redis系列二、redis的五种数据结构和相关指令之String

    redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set.sorted set.本节中将介绍Redis支持的主要数据结构中的st ...

  5. 年后跳槽BAT必看:10种数据结构、算法和编程课助你面试通关

    作者 | javinpaul 译者 | 大鱼 编辑 | 一一 出品 | AI 科技大本营 进入 BAT 这样的巨头企业工作,无疑是很多程序员的梦想.但事实上,能通过这些公司高难度编程面试的只是一小撮人 ...

  6. 每个程序员都必须知道的 8 种数据结构

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 快速介绍8种数据结构 数据结构是一种特殊的组织和存储数据的方式,可 ...

  7. 每个程序员都必须知道的8种数据结构

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://suo.im/6oo92L 快速 ...

  8. 下拉菜单实现树状结构_二叉索引树(树状数组)的原理

    背景 了解到二叉索引树这个数据结构,是在 leetcode 的 307 题,题目是要求实现一个数据结构,可以返回数组任意区间的和以及更新数组的某个值. 307.Range Sum Query - Mu ...

  9. 面试:整理面试中常被问到的8种数据结构

    数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作.数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构.此外,数据 ...

最新文章

  1. MyBatis 插件原理与自定义插件-插件编写与注册
  2. Nginx配置之基于域名的虚拟主机
  3. 《Scikit-Learn与TensorFlow机器学习实用指南》 第01章 机器学习概览
  4. 前端学习(975):bootstrap轮播图
  5. php期末作业经验,期末作业.php
  6. 《Go语言程序设计》 读书笔记 (八) 包
  7. 第六篇 JVM核心机制之JVM运行和类加载全过程(一)
  8. 聊一下C#开发者如何过渡到JAVA 开发者
  9. 2016ICPC沈阳站总结
  10. parallel(parallelStream)并发问题
  11. USB转双串口产品设计-RS485串口
  12. oracle 如何防止锁表,oracle锁表该如何解决
  13. 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程
  14. 基于OpenStack的云测试平台
  15. 手机上流行的各类谜语大揭密
  16. MySQL: 彻底删除数据库
  17. r语言中的或怎么表示什么不同_R语言中$是什么意思
  18. Java工程师是做什么的?
  19. 【云原生】Docker仓库详细讲解,搭建使用 Docker Registry 私服
  20. 为技术解开枷锁的那个人走了

热门文章

  1. spark生态及各个功能
  2. easyui下拉选项多怎么解决_作物根部病害多原因在哪?解决病害生根措施怎么做?...
  3. Qt总结之十八:总结
  4. 每天一算法(一)——用链表实现加减乘运算
  5. 阿里云 磁盘写保护 处理
  6. NetCore MiddleWare 注意事项
  7. Java多线程编程—锁优化
  8. 周学习进度---05
  9. [USACO09JAN]安全出行Safe Travel
  10. common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...