普歌-毅雁-树


前言

树是数据结构中比较重要的一部分,所以在这里单独写一篇来让大家更加深入的了解树的相关概念。


一、概念

在学习了前面线型表的基本概念时,我们知道了结点的概念,那么树也是一样的,他是有一种递归定义的数据结构。

  1. 他是n(n>=0)个结点的有限集合。
  2. 有且仅有一个特定的点称为根结点。
  3. 当结点数不为一时,其余结点可分为m个互不相交的有限集合

除根节点外,任何结点有且仅有一个前驱
如果不满足以上概念那么他就是我们后面要学习的图。

树的描述图

二、基本术语

1.空树

结点数为0的树,叫空树。

2.路径

路径很好理解,但是路径只能*从上往下**,这个需要注意。

3.路径长度

路径长度就是路径上经过的几条边,他的路径长度就为几。

代码如下(示例):

4.高度与深度

高度是指从下往上数。
深度则相反。

如果再有人问你树的深度(高度),你就明白了吧,就是问你有几层。

5.度

简单理解就是看他有几个孩子(分支)

树的度,各个结点的度的最大值。

三、分类

有序树

从逻辑上看,树中的各个子树从左自有是有次序的,不能互换。

	eg:家谱从大到小排序

无序树

与有序树相反

森是m课互不相交的树的集合

二叉树

他是你(n>=0)个结点的有限集合

  1. 空二叉树 n = 0;
  2. 或由两个互不相交的被称为根的左子树和右子树组成。

分类

  1. 满二叉树(2^h-1)

    特点:①只有最后一层有叶子结点 ②不存在度为1的结点

  2. 完全二叉树
    他是一种特殊的二叉树

    特点:①只有最后两层可能有叶子结点 ②最多只有一个度为1的结点

  3. 二叉排序树

    特点:
    ①左子树上所有结点的关键字均小于根节点的关键字
    ②右子树上所有结点的关键字大于根节点的关键字

  4. 平衡二叉树
    树上任意结点的左子树和右子树的深度只差不超过1.

  5. 红黑树
    红黑树挺重要的我后期会单独做一篇。

存储

  1. 顺序存储
    二叉树的顺序存储中,一定要将二叉树的结点编号与完全二叉树联系起来。

    i 的左孩子 ——2i
    i 的右孩子 ——2i + 1
    i 的父节点 —— 【i/2】

占用的空间(2^h-1)个单元格,只适合存储完全二叉树。

  1. 链式存储
    在链式存储中n个节点的二叉链表共有n+1个空链域(用于构造线索二叉树)

    具有链表的特性,只能正向向下找子节点,如果要找父节点就需要从根结点遍历。
    所以又叫三叉链表(左右孩子指针,父节点指针)。

四、二叉树的遍历

我们都知道线型结构的遍历。

那么有没有树的遍历呢?

如果要遍历树那么,就需要使用树的分层。一层一层的遍历。

分类
1. 先序:根左右(NLR)
2. 中序:左根右(LNR)
3. 后序:左右根(LRN)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远归的雁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值