树 的 双亲表示法 及 双亲孩子表示法

转载 2018年04月16日 21:51:23

1.概念

    树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。

节点的度(degree):一个节点含有的子树的个数称为该节点的度;     叶节点或终端节点(Leaf):度为0的节点称为叶节点;

非终端节点或分支节点:度不为0的节点;     双亲节点或父节点(parent):若一个节点含有子节点,则这个节点称为其子节点的父节点;

孩子节点或子节点(child):一个节点含有的子树的根节点称为该节点的子节点;  兄弟节点(Sibling):具有相同父节点的节点互称为兄弟节点;

树的度:一棵树中,最大的节点的度称为树的度;  节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

树的高度或深度(Depth):树中节点的最大层次;  堂兄弟节点:双亲在同一层的节点互为堂兄弟;

节点的祖先:从根到该节点所经分支上的所有节点;  子孙:以某节点为根的子树中任一节点都称为该节点的子孙。

森林(Forest):由m(m>=0)棵互不相交的树的集合称为森林;


2.代码

//1.树的双亲表示法 结点结构定义  
  
#define MAX_TREE_SIZE 100  
typedef int ElemType;  
  
//双亲结点  
typedef struct PTNode //定义树中的一个结点  
{  
    ElemType data;  
    int parent;  
}PTNode;  
  
//树结构  
typedef struct  
{  
    PTNode nodes[MAX_TREE_SIZE];  
    int r;                //根的位置索引  
    int n;                //树中结点的总数  
}PTree;  
  
//————————————————————————————————————————————————————————————————————//  
//2.树的双亲孩子表示法 结点结构定义  
  
#define MAX_TREE_SIZE 100  
typedef int ElemType;  
  
//孩子结点  
typedef struct CTNode     //定义树中的一个结点  
{    
    int child;            //孩子结点的下标  
    struct CTNode *next;  //指向下一个孩子结点的指针  
}*ChildPtr;  
  
//表头结构  
typedef struct  
{  
    ElemType data;        //存放树中结点的数据  
    int parent;           //存放双亲下标  
    ChildPtr firstchild;  //指向第一个孩子的指针  
}CTBox;  
//树结构  
typedef struct  
{  
    CTBox nodes[MAX_TREE_SIZE];  
    int r;                //根的位置索引  
    int n;                //树中结点的总数  
}PCTree;  

C++ 树-双亲表示法、孩子表示法、双亲孩子表示法

#include using namespace std; template struct Node{ T _data; int parent; }; template struct Tree{ ...
  • nightwizard2030
  • nightwizard2030
  • 2017-04-08 11:08:15
  • 1683

树的双亲孩子表示法

完成了图的邻接表表示法,发现它的存储结构与树的孩子链表表示法相似,都是由一个数组加若干邻接链表形成的结构。只是在构造和遍历时有所区别。 在孩子链表中查找兄弟结点比较困难,查找孩子和双亲很方便,故...
  • CCSUXWZ
  • CCSUXWZ
  • 2016-12-08 11:29:20
  • 1253

看数据结构写代码(30) 树的双亲孩子表示法的实现

树的 实现 方法 有三种:1.双亲 表示法  2. 孩子 表示 方法 3 结合 双亲 孩子 表示法 4. 二叉链表法 其中 前三种  都是 顺序 表示法, 都是 用 一组 顺序的 内存 空间 来表示...
  • fuming0210sc
  • fuming0210sc
  • 2015-03-26 16:52:11
  • 1925

孩子双亲表示法

  • 2014年05月08日 08:51
  • 2KB
  • 下载

树的存储结构--双亲表示法

树的存储结构--双亲表示法#include#include#define maxsize 20#includeusing namespace std;typedef struct {    char ...
  • Chasel_hunt
  • Chasel_hunt
  • 2011-07-19 09:38:42
  • 4684

数据结构之双亲表示法建树和操作

树的双亲表示法假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指 示其双亲结点到链表中的位置 。也就是说,每个结点除了知道自己是谁以外,还知道 它的双亲在哪里...
  • doubleselect
  • doubleselect
  • 2014-10-09 09:21:46
  • 1987

数据结构——树的双亲表示法

#include using namespace std; #define MAX_TREE_SIZE 100 typedef struct //节点结构 { char...
  • minyuanxiani
  • minyuanxiani
  • 2013-09-04 09:09:44
  • 2260

数据结构:树的存储——双亲表示法

/*********************************************** 程序:树的存储-----双亲表示法 完成者:小单 完成时间:2013年5月20日 ...
  • s634772208
  • s634772208
  • 2015-05-08 14:53:06
  • 2423

实现由双亲节点存储的树转化为二叉树的遍历算法实现

都知道,树的先根遍历和后根遍历分别对应了二叉树的先序遍历和中序遍历,而由先序遍历和中序遍历可以确定唯一的二叉树。 #include #include #include using names...
  • sinat_30062549
  • sinat_30062549
  • 2016-04-10 10:02:04
  • 2039
收藏助手
不良信息举报
您举报文章:树 的 双亲表示法 及 双亲孩子表示法
举报原因:
原因补充:

(最多只允许输入30个字)