数据结构学习—树

1、树的定义

是n个结点的有限集合。n=0时称为空树,在任意一棵非空树中:(1)有且仅有一个特定的称为根的结点。(2)当n>1时,其余结点可以分为m个互不相交的有限集合,其中每一个集合本身又是一棵树。在此,我们主要来学习二叉树的应用。

1.1、树的结点的分类

​ 结点拥有的子树数称为结点的。度为0的结点称为叶子结点或者终端结点。度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

1.2、结点间的关系

​ 结点子树的根称为该结点的孩子,相应的该结点称为孩子的双亲。同一个双亲的孩子之间互称兄弟

2、什么是二叉树?

​ 二叉树是N个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵不相交的、分别称为根结点的左子树右子树的二叉树构成。

2.1、二叉树的特点

​ (1)每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。

​ (2)左子树和右子树是有顺序的,顺序不能颠倒。

2.2、介绍几种特殊二叉树

​ 1、斜树

​ 所有结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称斜树

​ 2、满二叉树

​ 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的二叉树就称为满二叉树

​ 3、完全二叉树

​ 对一颗具有n个结点的二叉树按层编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树

​ 首先,我们要明确*"完全"“满”*的差异,满二叉树一定是完全二叉树,但完全二叉树不一定是满的。

​ 要判断一棵二叉树是否是完全二叉树其实很简单。先按层编号,当此二叉树的编号和满二叉树的编号一样时,此树就为完全二叉树,即使它不是满二叉树。

2.3、二叉树的性质

​ (1) 在二叉树的第i层上最多有2i-1 个节点 。(i>=1)
​ (2) 二叉树中如果深度为k,那么最多有2k-1个节点。(k>=1)
​ (3)n0=n2+1 n0表示度数为0的节点数,n2表示度数为2的节点数。
​ (4)在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整。

2.3、二叉树的几种遍历方式

​ 1、前序遍历

​ 规则时若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。如图所示:遍历的顺序为ABDGHCEIF

​ 2、中序遍历

​ 规则时若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后是访问根结点,最后中序遍历右子树。如图所示:遍历顺序为:GDHBAEICF。

​ 3、后续遍历

​ 规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式访问左右子树,最后访问根结点。

如图所示:遍历顺序为GHDBIEFCA。

3、思考题

1、我们日常开发中哪些场景用到了树这种数据结构?

2、还有哪些类型的树?例如红黑树、霍夫曼树等。

3、尝试编码实现一下二叉树的几种遍历操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值