数据结构(六) - 树
数据的逻辑结构:
1:1, 1:n,m:n 指的是元素的前驱和后继的个数
树型结构:
树的定义
树的表示方式:
树的其他表示方式:
树的基本术语
有序树/无序树:
森林:
线性结构和树结构的比较:
二叉树的定义
为什么要重点研究每个结点最多只有两个 “叉” 的树?
- 二叉树的结构最简单,规律性最强
- 可以证明,所有树都能转化为唯一对应的二叉树,不失一般性
- 普通树(多叉树)若不转化为二叉树,则运算很难实现
二叉树在树结构的应用中有着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树相互转换
这样就解决了树的存储结构及其运算中存在的复杂性
注意:二叉树不是树的特殊情况,它们是两个概念
思考:
二叉树的五种基本形态:
二叉树的性质
- 性质1
提问:第i层上最少有 几个 结点?(1)
- 性质2
提问: 深度为k时,最少有几个结点? (k)
- 性质三
从下往上分析有: B = n - 1 (n为二叉树的结点树)
从上往下分析有: B = n2 * 2 + n1 * 1
因此: n-1 = n2 * 2 + n1 * 1 => n = n2 * 2 + n1 * 1 + 1
又因为: n = n2 + n1 + n => n2 + n1 + n0 = n2 * 2 + n1 * 1 + 1 => n0 = n2 + 1 (n 的下标为度)
两种特殊形式的二叉树
满二叉树
- 满二叉树在同样深度的二叉树中结点个数最多
- 满二叉树在同样深度的二叉树中叶子结点个数最多
完全二叉树
通俗讲就是:完全二叉树的每个结点可以在满二叉树中找到并且位置也一样
特点:
性质4:
补充数学知识:在数学中,对数是对求幂的逆运算,正如除法是乘法的逆运算,反之亦然。
如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作x=loga N。其中,a叫做对数的底数,N叫做真数。
二叉树的存储结构
顺序存储结构
例1:
例2:
缺点:
链式存储结构
二叉链表
练习:
2n : 理论上的最多可能存在的指针域
n-1 : n个结点,每个结点和父结点都有一条连线,也就是有一个指针域。但是根结点没有
三叉链表
每个结点增加存储双亲结点的指针,方便查找双亲结点
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/16125509.html