树与二叉树(数据结构)

(1)树的基本性质

  • 1.树中的结点数等于所有结点的度数+1。
  • 2.树中结点的最大度数称为树的度。
  • 3.度为m的树中第i层上至多有mi-1个结点。
  • 4.高度为h的m叉树至多有(mh-1)/(m-1)个结点。
  • 5.具有n个结点的m叉树的最小高度math.ceil(logm[n(m-1)+1])

(2)二叉树的基本性质

  1. 二叉树是有序树,次序不能颠倒。
  2. 二叉树可以为空,但度为2的树至少有3个结点。
  3. 满二叉树:高度h,结点总数为2h-1。【最完美的二叉树】
  4. 完全二叉树:仅次于满二叉树之后完美的二叉树。【有一些完美的性质】
  5. 二叉树排序树:左子树小于根节点,右子树大于根节点。左子树和右子树又各是一颗二叉排序树。
  6. 平衡二叉树:树上任一结点的左子树和右子树的深度之差不超过1.【最苛刻的二叉树】

二叉树的一些完美性质:

  • 1.叶子结点树等于度为2的结点数+1。即N0=N2+1.
  • 2.非空二叉树上第K层最多有2k-1个结点。(满二叉树)
  • 3.高度为H的二叉树最多有2H-1个结点。【完美二叉树、满二叉树】
  • 4.对完全二叉树从1到N标号时:
    1. i>1时,它的双亲结点编号为math.floor(i/2).
    2. 2i<=N时,结点i的左孩子编号为2i,否则无左孩子。2i+1<=N时,结点i的右孩子为2i+1.否则无右孩子。
    3. 结点i所在的深度为math.floor(log2i)+1
  • 5.具有N个结点的完全二叉树的高度为:math.floor(log2N)+1或math.ceil(log2N+1)

树与二叉树的应用:(重要)

  1. 二叉排序树(二叉查找树BST)
    • 二叉排序树的中序遍历是递增有序的序列。(不然怎么叫排序树呢)
    • 二叉排序树的查找:先与根节点比较,之后左子树,右子树。
    • 二叉排序树的插入:插入的新节点一定是某个叶节点。
    • 二叉排序树的删除:
      • ①若删除结点是叶子结点,则直接删除,不会破坏二叉树的性质。
      • ②若删除结点只有一棵左子树或右子树,让其子树代替其原来位置即可。
      • ③既有左子树又有右子树的情况,在右子树上找中序第一个子女填补。

    查找算法的平均查找长度,主要取决于树的高度--->最坏情况下O(n)(n代单传) 

  2.平衡二叉树

    • 为了避免树的高度增长过快,降低二叉排序树的性能,规定在插入和删除二叉树结点时,要保证任意节点的左右子树的高度差不超过1,称为平衡二叉树,简称平衡树。
    •     

  3.哈夫曼树和哈夫曼编码

posted @ 2017-09-04 11:05  xubling  阅读(424)  评论(0编辑  收藏  举报