树的定义
结点分类
结点关系
结点层次
树的存储结构
双亲表示法
孩子表示法
孩子兄弟表示法
二叉树
五种形态
特殊二叉树
1.斜树
所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树。
2.满二叉树
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
3.完全二叉树
二叉树性质
性质1
性质2
性质3
性质4
性质5
二叉树顺序存储结构
为了减少存储空间的浪费,所以,顺序存储结构一般只用于完全二叉树。
二叉链表
二叉树的遍历
前序遍历
规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。
遍历的顺序为:ABDGHCEIF。
中序遍历
规则是若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。
遍历的顺序为:GDHBAEICF。
后序遍历
规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点
层序遍历
规则是若树为空,则空操作返回,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的颇用才结点逐个访问
线索二叉树
利用中序遍历利用未使用的空间 方便之后查找前继和后继 不用每次都遍历
区别前后继和孩子
代码实现
树、森林和二叉树的转换
树>二叉树
森林>二叉树
二叉树>树
二叉树>森林
树与森林的遍历
赫夫曼树
赫夫曼编码