欢迎使用CSDN-markdown编辑器
来源:互联网 发布:云端是什么软件 编辑:程序博客网 时间:2024/06/13 00:51
树形结构是一类非常重要的非线性数据结构。其中以树和二叉树最为常用,直观看来,树是以**分支关系**定义的层次结构。 ***树的基本定义和基本术语*** 树是n(n>=0)个结点的有限集合。在任意一颗非空树中: 1.有且仅有一个特定的称为根(Root)的结点 2.当n>1时,其余结点可分为m(m>0)个互不相交的有限集,又称为子树(SubTree)
这里要注意几个概念:
节点的度和树的度
前者是指:树中某个节点的子树的个数称为该节点的度
后者是指:树中各节点的度最大值称为树的度
分支节点和叶节点
分支节点的意思就是度不为0的节点
度为1的节点称为单分支节点
度为2的节点称为双分支节点
叶节点的意思就是度为0的节点
路径与路径长度
路径如何表示
路径长度=路径所通过的节点-1
孩子、父母、兄弟、祖先
节点的层次和树的高度
森林 :n个互不相交的树的集合
把树的根节点delete就成森林,反之就成树
了解相关的一些概念后,接下来就是树的性质
性质1:树中的节点树等于所有节点的度数加1
证明
(树的定义)在一颗树中,除Root外,每个节点有且仅有一个前驱节点
(理解)每个节点与指向它的一个分支一一对应
(推导)除Root的节点树=所有节点的分支数
(节点度的定义)节点的SubTree的个数为该节点的度
(结论)树中的节点树=所有节点的度数+1
以上这个步骤可以好好利用,很多性质都是以类似的来推导的
树的存储结构
双亲存储结构
一组顺序存储结构,用一组连续空间存储树的所有节点
同时在每个节点中附设一个伪指针的指示其双亲节点的位置
typedef struct{ ElemType data; int parent;}PTree[Maxsize];
孩子链存储结构
存储每个节点的值,以及所有孩子的链接
按照树的度(即树中所有节点度的最大值)设计节点的孩子节点指针域个数
typedef struct node{ ElemType data; struct node *sons[MaxSons];}TSonNode;
孩子兄弟链的结构(常用)
孩子兄弟链存储结构是为每个节点设计三个域
一个数据元素
一个该节点的第一个孩子节点的指针域
一个该节点的下一个兄弟节点指针域
typedef struct tnode{ ElemType data; //节点的值 struct tnode *hp; //指向兄弟 struct tnode *vp; //指向孩子节点}TSBNode;
用孩子-兄弟链作为存储结构,求树的高度?
int TreeHeight(TSNode *t){ TSNode *p; int m,max=0; if(t==NULL) return 0; else if(t->vp==NULL) return 1; else{ //求t 的子树的高度m p=t->vp; while(p!=NULL) { m=TreeHeight(p); if(max<m) max=m; p=p->hp; } return(max+1) }}
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Android简单人品计算器
- UML电子商城(2)-首页功能及适配器的使用
- 段落排版--对齐
- 请介绍下Android中常用的五种布局
- XMLSchema validation error occured in: null ,line = 2, column = 1, Message = cvc-elt.1: Cannot find
- 欢迎使用CSDN-markdown编辑器
- c++::关于类型萃取
- 分享一套Unity的学习路线教程
- 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。
- Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念
- Linux tree 命令简介
- HDU 2546 饭卡(01 背包)
- Sublime Text 3 + LaTeX - OS X
- 一条最长的短信息约占多少byte?