【数据结构】树的基本理解

一.树的基本概念
   1.树型结构是非线性数据结构

   2.树(Tree)是N(N>=0)个结点的有限集。在任意一颗非空树中:
  • 有且只有一个特殊的结点称为根结点,根结点没有前驱。
  • 除根结点外,其余结点被分为M(M>0)个互不相交的集合T1,T2.......Tm,其中每一个集合T(i)(1<=i<=m)又是与树结构类似的 子树。每个树的根结点有且只有一个前驱,但是可以有0个或多个后继。

    3.树的结构定义是一个递归的定义

二.树的其他表示方法

三.树的基本术语

1.结点:节点包括一个数据元素及若干指向其子树的分支(指针(索引))
2.结点的度:结点所拥有子树的个数称为该结点的度

3.叶结点:度为0的结点称为叶结点,叶结点也称为终端结点
4.分支结点:度不为0的结点称为分支结点,分支结点也称为非终端结点。一颗树中除叶结点以外的结点都为分支结点。

5.祖先结点:从根结点到该结点所经分支上的所有结点。
6.子孙结点:以某结点为根结点的子树中所有结点

7.双亲结点:树中某结点有孩子结点,则这个结点称为他孩子结点的双亲结点,双亲结点也称为前驱结点。
8.孩子结点:树中一个根结点的子树的结点称为孩子结点,孩子结点也叫后继节点。

9.兄弟结点:具有相同双亲结点的结点称为兄弟结点。
10.树的度:树中所有节点的度的最大值称为该树的度

11.结点的层次:从根节点到树中某结点所经路径上的分支数称为该节点的层次,根结点的层次为1,其他节点的层次是其双亲结点的层次加1
12.树的深度:树中所有节点的层次最大值称为该树的深度。

13.有序树:树中节点的各颗子树T0,T1.....是有序的即为有序树。其中T1叫根的第一棵子树,以此类推。
14.无序数:树中节点的各棵子树之间的次序不重要,可以相互交换位置。

15.森林:树m棵树的集合(m>=0)。删去一棵非空树的根节点 ,就变为森林;反之增加一个节点,让森林中每一棵树的根结点都变为他的子女,森林就变为一棵树。
四.树的存储结构

计算机中存储树的信息,要求既要存储结点的数据信息,又要存储节点之间的逻辑关系信息。

1.双亲表示法:用指针表示每个节点的双亲结点

typedef int DataType;

struct Node
{
	struct Node* pParent;   //指向双亲结点的指针域  
	DataType data;          //结点中的数据

};

优点:寻找一个节点的双亲结点的操作很容易实现
缺点:寻找一个结点的孩子结点不容易


2.孩子表示法:用指针指出每个节点的孩子结点

typedef int DataType;

struct Node
{
	struct Node* pChild1; //指向孩子结点的指针域
	struct Node* pChild2;//指向孩子结点的指针域
	struct Node* pChild3;//指向孩子结点的指针域  
	DataType data;          //结点中的数据

};

优点:寻找一个节点的孩子结点比较方便
缺定:寻找一个结点的双亲比较难

3.双亲孩子表示法:用指针即表示每个节点的双亲结点,也表示每个节点的孩子结点。

typedef int DataType;

struct Node
{
	struct Node* pParent;   //指向双亲结点的指针域  
	struct Node* pChild1; //指向孩子结点的指针域
	struct Node* pChild2;//指向孩子结点的指针域
	struct Node* pChild3;//指向孩子结点的指针域  
	DataType data;          //结点中的数据

};

优点:找某结点的双亲和孩子都很方便

4.孩子兄弟表示法:表示每个节点的第一个孩子结点,也表示出每个节点的下一个兄弟结点。

typedef int DataType;

struct Node
{
	
	struct Node* pChild1; //指向孩子结点的指针域
	struct Node* pNextBrother; //指向下一个兄弟结点
	DataType data;          //结点中的数据

};

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值