【数据结构】 树、二叉树、完全二叉树,先序遍历、中序遍历、后序遍历
树是一种非线性的数据结构
一棵树由n(n>=0)个元素组成,当n为0时,称为空树
树的定义
1.每个元素都可以称为节点
2.非空树中,有一个特定的点,称为根节点或树根
3.每个节点下方连接的节点称为后代节点
没有子树的节点,称为叶子节点
一个节点子树的个数,称为这个结点的度,叶子节点的度为0
树种各结点度的最大值,称为数的度
树中所有节点层次的最大值称为树的深度
二叉树:所有节点的度都不大与2的树
二叉树有5种形态:
二叉树的特性:
- 在二叉树的第i层上最多有2i-1个结点(i ≥ 1)
- 深度为k的二叉树的总结点个数最多为2k-1个(k ≥ 1)
- 满二叉树的定义:一棵深度为k且有2k-1个结点的二叉树称为满二叉树。
完全二叉树:二叉树中除去最后一层结点为满二叉树,且最后一层的结点依次从左到右分布。
二叉树的遍历:
对于二叉树而言,是由三个基本单元组成:根结点、左子树和右子树。因此如果能遍历这三部分,就能遍历整个二叉树
三种二叉树遍历方式
- 先序遍历( 根 -> 左 -> 右 )
- 中序遍历( 左 -> 根 -> 右 )
- 后序遍历( 左 -> 右 -> 根 )
- 层序遍历
例如下面这个表:
先序遍历为:e a c b d g f
中序遍历为:a b c d e f g
后序遍历为:b d c a f g e
层序遍历为:e a g c f b d
先序简单方法:在每个节点左边打点,连一根线:
中序简单方法,在每个节点下面打一个点,连一根线:
后序简单方法:在每个节点右边打一个点,连一根线:
前序遍历序列和中序遍历序列相同的二叉树:只有根结点的二叉树或非叶子结点只有右子树的二叉树
序列构造二叉树:
- 先序:A B D C E F G
- 中序:D B A E G C F
推算二叉树:
