树——一种数据结构(二)
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;
};
树——一种数据结构(二)相关推荐
- java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)
常见数据结构(二)-树(二叉树,红黑树,B树) 标签: algorithms [TOC] 本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自course ...
- 数据结构---二叉平衡排序树的删除
数据结构-二叉平衡排序树的删除 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct avlT ...
- 数据结构---二叉线索树
数据结构-二叉线索树 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct bmTree {i ...
- Redis系列二、redis的五种数据结构和相关指令之String
redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set.sorted set.本节中将介绍Redis支持的主要数据结构中的st ...
- 年后跳槽BAT必看:10种数据结构、算法和编程课助你面试通关
作者 | javinpaul 译者 | 大鱼 编辑 | 一一 出品 | AI 科技大本营 进入 BAT 这样的巨头企业工作,无疑是很多程序员的梦想.但事实上,能通过这些公司高难度编程面试的只是一小撮人 ...
- 每个程序员都必须知道的 8 种数据结构
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 快速介绍8种数据结构 数据结构是一种特殊的组织和存储数据的方式,可 ...
- 每个程序员都必须知道的8种数据结构
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://suo.im/6oo92L 快速 ...
- 下拉菜单实现树状结构_二叉索引树(树状数组)的原理
背景 了解到二叉索引树这个数据结构,是在 leetcode 的 307 题,题目是要求实现一个数据结构,可以返回数组任意区间的和以及更新数组的某个值. 307.Range Sum Query - Mu ...
- 面试:整理面试中常被问到的8种数据结构
数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作.数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统都使用数据结构.此外,数据 ...
最新文章
- MyBatis 插件原理与自定义插件-插件编写与注册
- Nginx配置之基于域名的虚拟主机
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第01章 机器学习概览
- 前端学习(975):bootstrap轮播图
- php期末作业经验,期末作业.php
- 《Go语言程序设计》 读书笔记 (八) 包
- 第六篇 JVM核心机制之JVM运行和类加载全过程(一)
- 聊一下C#开发者如何过渡到JAVA 开发者
- 2016ICPC沈阳站总结
- parallel(parallelStream)并发问题
- USB转双串口产品设计-RS485串口
- oracle 如何防止锁表,oracle锁表该如何解决
- 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程
- 基于OpenStack的云测试平台
- 手机上流行的各类谜语大揭密
- MySQL: 彻底删除数据库
- r语言中的或怎么表示什么不同_R语言中$是什么意思
- Java工程师是做什么的?
- 【云原生】Docker仓库详细讲解,搭建使用 Docker Registry 私服
- 为技术解开枷锁的那个人走了
热门文章
- spark生态及各个功能
- easyui下拉选项多怎么解决_作物根部病害多原因在哪?解决病害生根措施怎么做?...
- Qt总结之十八:总结
- 每天一算法(一)——用链表实现加减乘运算
- 阿里云 磁盘写保护 处理
- NetCore MiddleWare 注意事项
- Java多线程编程—锁优化
- 周学习进度---05
- [USACO09JAN]安全出行Safe Travel
- common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...