树(二叉树+树+森林)

在这里插入图片描述

树的基本概念

  • 树是一个n(n>=0)个结点的有序合集
  • 结点:指树中的一个元素;
  • 结点的度:指结点拥有的子树的个数,二叉树的度不大于2;
  • 树的度:指树中的最大结点度数;
  • 叶子:度为0的结点,也称为终端结点;
  • 高度:叶子节点的高度为1,根节点高度最高;
  • 层:根在第一层,以此类推;
  • 节点的深度:从上到下
  • 节点的高度:从下到上1
  • 路径长度:经过的边的个数
  • 森林:好多树,通常树去掉根结点就是森林

树的性质

  1. 树的结点数等于树中所有节点的度加1.
  2. 度为m的树中第i层的结点最多有m^(i-1)
  3. 高度为h的树结点最多为(m^n-1)/(m-1)
  4. 具有n个结点的m叉树高度最少为
    在这里插入图片描述

二叉树

结点的度最多为2的树

  • 满二叉树
  • 完全二叉树
  • 二叉排序树:左小于中,中小于右
  • 平衡二叉树:左右子树深度差不超过1

性质

  • 非空二叉树的叶子结点数等于度为2的结点数加1
  • 非空二叉树第k层最多2^(k-1)结点
  • 高度为h的二叉树至多有2^(h-1)结点
  • 完全二叉树性质

存储结构

完全二叉树和满二叉树适合顺序存储,一般二叉树得加空结点
顺序存储空间利用率低,二叉树一般用链式存储

二叉树和遍历序列的转换

先中后层要有递归思想

线索二叉树

引入线索二叉树是为了像遍历单链表一样遍历二叉树,加快查找结点前驱和后继速率
在这里插入图片描述
线索链表
在这里插入图片描述

树与二叉树的应用

二叉排序树BST

左小于右

平衡二叉树

高度差不超过1

哈夫曼树

树和森林

存储结构

  • 双亲表示法
  • 孩子表示法
  • 孩子兄弟表示法

树、森林和二叉树转换

左孩子右兄弟

树的应用-并查集