数据结构笔记之树

本文详细介绍了树这一重要的数据结构,包括树的基本概念如根结点、度、叶子结点等,以及树的性质、存储结构如顺序存储和链式存储。特别讨论了二叉树的定义、完全二叉树的特性,以及二叉树的遍历方法,包括递归和非递归方式。文章还提到了线索二叉树的概念,用于更高效地遍历二叉树。
摘要由CSDN通过智能技术生成

树是N个结点的有限集合,N为0时,称为空树,作为空树,这是一种特殊情况。在任意一颗非空树中应满足:
1.有且仅有一个特定的称为的结点。
2.当N>1时,其余结点可分为m(m>0)个互不相交的有限集合T1,T2,···,Tm,其中每一个集合本身又是一棵树,并且成为根结点的子树

树的相关术语:
根结点:树只有一个根结点。
结点的度:结点拥有的子树的数量。
度为0时称为终端结点或叶子结点,度不为0的时候称为分支结点和非终端结点,在分支结点中除去根结点也称为内部结点。在分支结点中,每个结点的分支数就是该结点的度。
树的度:树中所有结点的度的度数的最大值。
祖先结点:根结点到该结点的唯一路径上的任意结点
双亲结点:根结点到该结点的唯一路径上的最接近该结点的结点。
兄弟结点:具有相同双亲结点的结点。
层次:根为第一层,根的孩子结点为第二层,以此类推。
结点的深度:根结点开始自顶向下累加
结点的高度:叶结点开始自底向上累加
树的高度(深度):树中结点的最大层数。

树的性质:
1.树中的结点数等于所有结点的度数加1。
2.度为m的树中第i层上至多有m^(i-1)个结点(数学归纳法可证得)
3.高度为h的m叉树至多有(m^h-1)/(m-1)个结点(利用性质2.等比数列求和公式)
4.具有n个结点的m叉树的最小高度是
在这里插入图片描述
由性质三(m^h-1)/(m-1)=n可求解,注意向上取整

树的存储结构
1.顺序存储结构
双亲表示法:用一组连续的存储空间存储树的结点,同时在每个结点中,用一个变量存储该结点的双亲结点在数组中的位置。

typedef char ElemType
typedef struct TNode{
ElemType data;   //结点数据
int parent;    //该结点的双亲结点在数组中的下标
}TNode;
#define MAXSIZE 100
typedef struct{
TNode nodes[MAXSIZE];    //结点数组
int n;    //结点数量
}Tree;

双亲表示法可以根据parent值找到该结点的双亲结点,时间复杂度为O(1).

2.链式存储结构(1)
孩子表示法:把每个结点的孩子结点排列起来存储成一个单链表。所以n个结点就有n个链表;如果是叶子结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值