数据结构-树

1、基本概念
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
1.1、定义:一棵树(tree)是由n(n>0)个元素组成的有限集合,其中:
(1)每个元素称为结点(node);
(2)有一个特定的结点,称为根结点或根(root);
(3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子集又都是一棵树(称为原树的子树)
1.2、结点:树的结点包含一个数据元素及若干指向其子树的分支。 结点拥有的子树数称为结点的度 (Degree) 。度为 0 的结点称为叶结点(Leaf) 或终端结点;度不为 0 的结点称为非终端结点或分支结点 。 除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
在这里插入图片描述
1.3、结点关系
结点的子树的根称为该结点的孩子(Child) ,相应地,该结点称为孩子的双亲;
同一个双亲的孩子之间互称兄弟 (Sibling);
在这里插入图片描述
1.4、线性结构和树对比
在这里插入图片描述
1.5、树的存储结构
充分利用顺序存储和链式存储结构的特点,完全可以实现对树的存储结构的表示。我们这里要介绍三种不同的表示法:双亲表示法、孩子表示法、孩子兄弟表示法。
1.5.1、双亲表示法:
我们以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置
在这里插入图片描述
1.5.2、孩子表示法
把每个结点的孩子结点排列起来,以单链表作存储结构,则 n 个结点有 n 个孩子链表,如果是叶子结点则此单链表为空。然后 n 个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中,如图
在这里插入图片描述
1.5.3、孩子兄弟表示法
任意一棵树,宫的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。
在这里插入图片描述
2、常用-二叉树
二叉树( Binary Tree) 是 n(n≥ O) 个结点的有限集合,该集合或者为空集(称为空二叉树),或着由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
2.1、树的遍历
前序遍历
中序遍历
后序遍历
层序遍历
赫夫曼树(压缩)
3、常用算法实现的树
二叉查找树(二叉排序树)
平衡二叉树(AVL树)
红黑树
B/B-树
B+树
4、总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值