树的基础知识

目录

一.树的定义:

 二.树的基本术语:

1.根结点:

2.结点的度:

3.叶子结点,分支结点:

4.孩子结点,双亲结点,兄弟结点:

5. 祖先,子孙:

6.结点的层数,树的深度(高度),树的宽度:

三.树的遍历:

树的遍历:

四.树的存储结构:

1.双亲表示法:

2.孩子表示法

3.孩子兄弟表示法


一.树的定义:

树是n(n>=0)个结点的有限集合,互不相交集合。当n=0时,是一颗空树。

 二.树的基本术语:

1.根结点:

非空树有且仅有一个根结点,如上图a:A为根结点。

2.结点的度:

每个结点所拥有的子树个数称为结点的度。其中所有结点中最大度称为树的度。如图上图a,从上到下从左到右每个结点的度分别为: A-2  B-3  C-2 D-0 E-1 F-0 G-0 H-0。可以看出树的度为3。

3.叶子结点,分支结点:

度为0的结点为叶子结点。度不为0的结点为分支结点。如上图a:叶子结点:D I F G H。 分支结点:A  B C E。

4.孩子结点,双亲结点,兄弟结点:

每个结点的直接子结点为孩子结点。每个结点的根结点为双亲结点。有同一个双亲的孩子称为兄弟结点。如上图a:B结点的孩子结点为:D E F,B结点的双亲结点为A结点,B的兄弟结点为C。

5. 祖先,子孙:

结点的直接双亲或间接双亲为祖先,如上图a,I结点的祖先有E B A。以某个结点为根结点的所有子树中的结点为结点的子孙。如上图a,B的子孙结点有 D E F I。

6.结点的层数,树的深度(高度),树的宽度:

规定根结点的层数为1,结点在第k层,则孩子在k+1层。最后一层为树的深度(树的高度)。树中每一层中结点个数最大数为树的宽度。

三.树的遍历:

树的遍历:

有前序遍历(根左右),后序遍历(左右根)和层序遍历(从上到下,从左到右依次遍历)。相对二叉树少了中序遍历。因为结点的子树个数是不确定的,而二叉树每个结点的度<=2。

四.树的存储结构:

1.双亲表示法:

除根结点外,每个结点都仅有一个直接双亲结点。每个结点都存储数据和他的直接双亲结点的下标。根结点没有双亲,所以双亲下标为-1。

 结构定义代码如下:

#define MaxSize 100
typedef char dataType;
typedef struct{
    dataType data;
    int parent;
}PNode;
typedef struct{
    PNode tree[MaxSize];
    int treeNum;
}Ptree;

2.孩子表示法

        孩子表示法,顾名思义就是每个结点存储孩子结点。这和双亲表示法一样,也是存储下标。但是由于每个结点的孩子不止一个,所以我们还要一个结构来存孩子。那么就可以是顺序存储和链接存储。一下讲解都是以链接存储为例。

 

 结构定义代码如下:

#define MaxSize 100
typedef char dataType;
typedef struct ChildNode{
    int child;
    ChildNode* next;
}ChildNode;
typedef struct{
    dataType data;
    ChildNode * first;
}TreeNode;
typedef struct{
    TreeNode* tree[MaxSize];
    int treeNum;
}CTree;

3.孩子兄弟表示法

        孩子兄弟表示法又称二叉链表表示法。每个结点存储数据域及第一个孩子和右兄弟。

 

 

结构定义代码如下:

typedef char dataType;
typedef struct CSNode{
    dataType data;
    CSNode * firstchild;
    CSNode * rightsib;
}CSNode;
CSNode * root;//根结点

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值