zoukankan      html  css  js  c++  java
  • 树与二叉树(数据结构)

    (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.哈夫曼树和哈夫曼编码

  • 相关阅读:
    CSS3学习笔记
    ie6对hover兼容性问题的解决:
    Maven-- 操作指南
    java基础 -- json多层转换成对象
    idea 导入maven项目
    工具的使用与安装--JAVA 环境变量的配置
    FreeMarker语言
    Apache Shiro 安全框架
    java基础--内部类
    java框架--Model层框架 sorm
  • 原文地址:https://www.cnblogs.com/xubing-613/p/7472636.html
Copyright © 2011-2022 走看看