初步认识树

【边学边记】之初步认识树
基本知识
定义:树(tree)可以用几种方式定义。定义树的一种自然的方式是递归的方法。一棵树是一些节点的集合。这个集合可以是空集;若非空,则一棵树由称做根(root)的节点r以及0个或多个非空的(子)树 T1,T2,...,Tk 组成,这些子树中每一棵树的根都被来自根r的一条有向的边(edge)所连接。
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树。
相关定义
1.树的度:也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度。
2.叶节点:树中度为零的结点称为叶结点或终端结点。
3.分枝节点:树中度不为零的结点称为分枝结点或非终端结点。
4.内部节点:除根结点外的分枝结点统称为内部结点。
5.树的深度:树的深度是从根节点开始(其深度为1)自顶向下逐层累加的,一棵树的深度等于它的最深的树叶的深度。
6.树的高度:从叶节点开始(其高度为1)自底向上逐层累加的,一棵树的高度等于它的最深的树叶的度高。
*注:不同的地方对树的深/高度定义不同,有的认为根/叶节点开始高度为0;具体情况可看题目要求。
eg:
一颗具体的树
树的度:2
叶节点:C、G、F
分枝节点:A、B、D、E
内部节点:B、D、E
树的深度高度和:4
B的深度和高度:1、3
D的深度和高度:2、2
树的实现
实现树的一种方法是可以在每一个节点除数据外还要有一些指针,使得该节点的每一个儿子都有一个指针指向它。由于每个节点的儿子数可以变化很大并且事先不知道,所以,解法是:将每个节点的所有儿子都放在树节点的的链表中。
树的节点声明:

typedef struct TreeNode *PtrToNode;
struct TreeNode
{
ElementType Ellement;
PtrToNode FirstChild;
PtrToNode NextSibling;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值