当前位置: > 财经>正文

树的三种表示方式 债券报价的表示方式有哪几种

2023-08-28 09:45:14 互联网 未知 财经

树的三种表示方式

树(tree)是n个结点的有限集合。n=0时称为空树,在任意一颗非空树中: ①有且仅有一个特定的称号为根(root)的结点; ②当n>1时,其余结点分为m(m>0)个互不相交的有限集合T1,T2…Tm,其中每一个集合本身又是一棵树,并且称为根的子树(subTree);

特别注意只要有相交的子树的就不是树。 每一个结点所拥有的子树的个数称为结点的度(Degree)度为0的结点称为叶子结点(Leaf)或端结点。树的度是树内各结点的度的最大值。

结点间的关系

下面我们来简单介绍一下三种树的存储结构 I 双亲表示法 我们来看看这个树如何表示

按照双亲表示法生成对于的表

其中-1表示为根结点,没有双亲结点。

//树的父母双亲表示方法#ifndef TREEFM_H_#define TREEFM_H_const int MAX_TREE_SIZE=100;templatestruct PTnode //结点结构{ T data; //结点数据 int parent; //结点位置};templateclass PTtree{public: PTtree(); ~PTtree(); void PTtreeInput();private: PTnode nodes[MAX_TREE_SIZE]; int r, n; //根的位置和结点数};templatePTtree::PTtree(){}templatePTtree::~PTtree(){}#endif

II 孩子表示法 具体的办法是,把每个孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则单链表为空,然后n个头指针组成一个线性表,采样顺序结构,放在一个数组中。

//树的孩子表示法#ifndef CTTREE_H_#define CTTREE_H_#include "LinkList.h"const int MAX_TREE_SIZE = 100;templateclass CTtree:public LinkList{public: CTtree(); ~CTtree();private: LinkList m_CTtree[MAX_TREE_SIZE]; int n;};templateCTtree::CTtree(){}templateCTtree::~CTtree(){}#endif

III 孩子兄弟表示法 任意一颗树,它的结点的第一个孩子如果就是唯一的,它的兄弟如果也是唯一的,设置两个指向该结点的第一个孩子和它兄弟的结点 一个结点包含一个数据域和两个指针域。 这这棵树的表示为 则可以定义为

//孩子兄弟表示法templatestruct CSnode{ T data; CSnode *firstchild, *rightsib; //右孩子和兄弟};templateclass CStree{public: CStree(); ~CStree();private: CSnode *Head; //头结点};templateCStree::CStree(){ Head = new CSnode;}templateCStree::~CStree(){ delete Head;}

一般很少用到吧,数据结构书上都很少有介绍具体操作的。估计理解下存储的方法就好吧。

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。