数据结构复习

树:是由n个节点构成的有限集合T,n=0为空树,n!=0,满足

  1. 有root
  2. 除root外,其他节点被分成互不相交的有限集合,每个集合也是树

结点的度:拥有的子树数目,即有几个分支

叶结点:度为0
分支节点:度不为0
孩子节点:某一结点的直接后继
父亲结点:某一结点的直接前继

结点的层次:root为1层
书的高度:最大层次

有序树:从左到右子树有序,不可交换
无序树:次序不重要
森林:互不相交的树的集合

二叉树

  1. 有序树
  2. 左右之分

满二叉树

任意一层的节点个数达到了最大值
高度为k的二叉树有$2^k-1$个结点

完全二叉树

只有最下面两层结点的可以小于2,且最下面一层的结点都在最左边的连续位置

正则二叉树

除了叶节点,所有分支节点度为2

扩充二叉树

在出现空子树的位置填充叶结点

二叉树性质

  1. 非空二叉树的i层最多有$2^{i-1}$个结点
  2. 深度为k的二叉树最多有,${2^{k}-1}$个节点
  3. 任意二叉树,叶节点个数为$n_0$,度为2的分支结点为$n_2$个,则$n_0=n_2-1$

存储结构

顺序存储

链式存储

二叉树遍历

深度优先

D表示访问根节点
R表示遍历右子树
L表示遍历左子树

前序

DLR

中序

LDR

后序

LRD

广度优先

  1. 根结点入队
  2. 队列非空循环3~5
  3. 出队一个结点并访问
  4. 左孩子入队
  5. 右孩子入队

树的存储结构

双亲表示法

孩子表示法

孩子兄弟表示法

树的遍历

深度优先

广度优先

树和二叉树的应用

表达式树

哈夫曼树

  1. 路径:从一个结点到另一个节点的分支序列
  2. 路径长度
  3. 结点权值
  4. 结点的加权路径长度:从根节点到某个结点的路径长度与该结点的权值的乘积
  5. 树的加长路径长度WPL:$\sum_{i=1}^{n}w_i l_i$
  6. n个具有权值的叶节点构成的二叉树中,WPL最小的那个

性质

  1. 有n个叶结点的,总共结点2n-1
  2. 权值越大的结点离根节点跃进
  3. 正则二叉树
  4. 左右子树交换仍然是哈夫曼树