四叉树数据结构

这是一个关于四叉树数据结构的实现,包括四叉树节点的定义和基本操作,如设置和获取节点数据、孩子节点,以及树的构造、析构、插入和查找操作。同时,代码使用了Boost库进行序列化处理。
摘要由CSDN通过智能技术生成
 

/********************************************//**
* Time: 2011年4月14日10:03:06
* Project: 矢量渲染
* Puruose: FourTreeTpl.h四叉树模板结构定义
* Author:  刘巍
* Describe: 定义四叉树数据结构,包括节点,以及基本树操作
***********************************************/

#ifndef FOURTREETPL_H
#define FOURTREETPL_H

#include "core.h"
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/split_member.hpp>

//! 四叉树的节点位置.
/*! 定义四叉树的节点位置 */
typedef enum
{
 EM_LEFTUP = 0,  /*!< 左上位置 */ 
 EM_RIGHTTUP = 1, /*!< 右上位置 */
 EM_LEFTDOWN = 2, /*!< 左下位置 */
 EM_RIGHTDOWN = 3 /*!< 右下位置 */
} NodeDirection ;


/**
* @brief 四叉树类
* 实现四叉树中的基本操作
*/

template<class Type> class FourTree;

/**
* @brief 四叉树节点类
* 四叉树节点,包括其子孩子,以及基本树节点操作
*/
template<class Type> class FourTreeNode
{
 friend class FourTree<Type>;

 typedef FourTreeNode<Type> FourTreeNodeType;

public:

 /**
 *  默认构造函数,构造一个空的节点
 */
 FourTreeNode():m_pluChild(NULL),m_pruChild(NULL),m_pldChild(NULL),m_prdChild(NULL)
 {};

 /**
 * 重载构造函数
 * @param item 节点数据
 * @param lu 左上孩子指针
 * @param ru 右上孩子指针
 * @param ld 左下孩子指针
 * @param rd 右下孩子指针
 */
 FourTreeNode(const Type& item, FourTreeNodeType *lu = NULL,FourTreeNodeType *ru = NULL,FourTreeNodeType *ld = NULL,FourTreeNodeType *rd = NULL)
 {
  m_data = item;
  m_pluChild = lu;
  m_pruChild = ru;
  m_pldChild = ld;
  m_prdChild = rd;

 }

 /**
 * 得到节点数据
 * @return 节点数据
 */
 Type GetData() const
 {
  return m_data;
 }

 /**
 * 设置节点数据
 * @param item节点数据
 */
 void SetData(const Type& item)
 {
  m_data = item;
 }

 /**
 * 得到左上孩子节点
 * @return 左上孩子节点
 */
 FourTreeNodeType* GetLeftUpData() const
 {
  return m_pluChild;
 }

 /**
 * 得到右上孩子节点
 * @return 右上孩子节点
 */
 FourTreeNodeType* GetRightUpData() const
 {
  return m_pruChild;
 }

 /**
 * 得到左下孩子节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值