数据结构-王道2017-第4章 树与二叉树-树、森林

1.树的存储结构有多种,既可以采用顺序存储结构,也可以采用链式存储结构,都要求能唯一地反映出树中各结点之间的逻辑关系,三种常用的存储结构

1)双亲表示法

采用一组连续空间来存储每个结点,同时在每个结点中增设一个伪指针,指示其双亲节点在数组中的位置,根节点下标为0,其伪指针域为-1。

#define MAX_TREE_SIZE 100   //树中最多结点数
typedef struct{        //树的结点定义
   ElemType data;    //数据元素
   int parent;           //双亲位置域
}PTNode;

typedef struct{                                //树的类型定义
  PTNode nodes[MAX_TREE_SIZE];   //双亲表示
  int n;                       //结点数
}PTree;

缺点是求结点的孩子时需要遍历整个结构

2)孩子表示法

是将每个结点的孩子都用单链表链接起来形成的一个线性结构,则N个结点就有N个孩子链表(叶子结点的孩子链表为空表),对于这种存储方式寻找子女的操作非常直接,而寻找双亲的操作需要遍历N个结点中孩子链表指针域所指向的N个孩子链表。

3)孩子兄弟表示法又称为二叉树表示法,即以二叉链表作为树的存储结构。孩子兄弟表示法是使每个结点包括三部分内容:结点值、指向结点第一个孩子结点的指针和指向结点下一个兄弟结点的指针(沿此域可以找到结点的所有兄弟结点):

存储结构:

typpedef struct CSNode{
   ElemType data;
   struct CSNode *firstchild,*nextsibling;
}CSNode,*CSTree;

这种存储方式比较灵活,其最大的优点是可以方便地实现树转换为二叉树的操作,易于查找结点的孩子等,但缺点是从当前结点查找其双亲结点比较麻烦。如果为每个结点增设一个parent域指向其父结点,则查找结点的父结点也很方便。

4)

时间: 2024-12-28 23:52:35

数据结构-王道2017-第4章 树与二叉树-树、森林的相关文章

数据结构---树、二叉树、森林

1.基本术语: 度:有两种度"结点的度"与"树的度".结点的度指的是一个结点子树的个数:树的度是指树中结点度的最大值. 叶子结点:指的是没有子树的结点. 层:树是有层次的,一般根结点为第0层.规定根结点到某结点的路径长度为该结点的层数. 深度:树中结点的最大层数 兄弟:同一双亲的结点,互为兄弟 堂兄弟:双亲在同一层次的结点,互为堂兄弟 祖先:从根结点到该结点的路径上的所有结点都是该结点的祖先. 子孙:以某一结点为根的子树上的所有结点都是该结点的子孙 森林:n棵互不相

树、二叉树、森林的转换

树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明.(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子) 森林转换为二叉树 (1)把每棵树转换为二叉树. (2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来. 二叉树转换为树 是树转换为二

6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 树的双亲表示法 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c.SequenceStack.c    

数据结构笔记整理第5章:树和二叉树

第5章 树和二叉树 本章内容 本章主要介绍树.二叉树的概念,遍历方法以及应用等,本章在考研中是重点内容. 5.1 树相关的基本概念 树是一种非线性的数据结构,是若干结点的集合,有唯一的根结点和若干棵互不相交的子树构成.其中每一棵子树又是一棵树,也是由唯一的根结点和若干棵互不相交的子树组成的,由此可知:树的定义是递归的.树的结点数目可以为0,为0的时候是一棵空树. 结点:结点不仅包含数据元素,而且包含指向子树的分支. 结点的度:结点拥有子树的个数或者分支的个数. 树的度:树中各结点度的最大值. 叶

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

数据结构学习笔记(树、二叉树)

树(一对多的数据结构) 树(Tree)是n(n>=0)个结点的有限集.n=0时称为空树.在任意一颗非空树种: (1)有且仅有一个特定的称为根(Root)的结点: (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1.T2........Tn,其中每一个集合本身又是一棵树,并且称为根的子树. 对于树的定义还需要强调两点:1.n>0时根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点.2.m>0时,子树的个数没有限制,但它们一定是互不相交的. 结点

数据结构:树与二叉树

大部分笔记摘自<大话数据结构>与<数据结构> 一:相关定义 1.树是n个结点的有限集,n=0时称为空树.在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点:(2)当n>1时,其余结点可分为m个互不相交的有限集,T1.T2.--.Tm,其中每一个集合本身又是一颗树,并且称为根的子树. 2.结点拥有的子树数称为结点的度,而树的度为结点的度的最大值.度为0的结点称为叶结点或终端结点,度不为0的结点称为分支结点.内部结点或非中断结点. 3.结点的子树的根称为结点的孩子,该结点称

树和二叉树-第6章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第6章 树和二叉树 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼06 树和二叉树  

6-1-二叉树顺序存储结构-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 二叉树顺序存储结构 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链