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

    定义

     

    特点

     

    特殊的二叉树

    斜树

    顾名思义,其中的结点都只有一个,又分为左斜树和右斜树,这时候又有疑惑了,这种数据结构不是有线性表一样吗,没错,线性表是一种特殊的树
     

    满二叉树

     

    完全二叉树

     
    这个定义有点绕,简单来说就是所有的结点必须是有顺序的,不能跳跃存在
     

    二叉树的性质

    1.在二叉树的第i层至多有2的(i-1)次方个结点,参考满二叉树
    2.深度游k的二叉树至多有2的k次方-1个结点,参考满二叉树
    3.任意二叉树,终端结点为n0,度为2的结点为n2,度为1的结点为n1,则n0=n2+1
    下面是推倒过程,设连接线为x,总结点数为n,则:
    n=n0+n1+n2
    x=n1+2n2
    x=n-1
    求得n0=n2+1
     

    存储结构

    二叉树的顺序结构

    这有点像广度优先遍历,但这里关注的是存储结构,不是遍历方式,顺序结构一般只用于满二叉树,普通二叉树会有空间浪费,例如(^表示空)
     

    二叉链表

    一个数据域,两个指针域分别表示左孩子和右孩子
     

    二叉树的遍历

     

    前序遍历

     
     

    中序遍历

    后序遍历

     
     

    层序遍历

    这四种遍历名称都是针对每一个根结点而言,
    前序:先遍历根节点(深度优先遍历)
    中序:中间遍历根节点
    后序:最后遍历根节点
    层序:从根节点一层一层往下遍历(广度优先遍历)
     
     

    线索二叉树

    定义

    指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索二叉链表,相应的二叉树就成为思安所二叉树
    还需要证明前驱后后继是否为孩子,所以加入了两个标志位,单个结点的结构如下

    场景

     

    赫夫曼树及其应用

    定义及原理

    从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径的长度
    例如这两个二叉树
     
    二叉树a中,从根结点到D结点的路径为4,二叉树b中,从根结点到D结点的路径为2
    二叉树a的树路径长度为1+1+2+2+3+3+4+4=20
    二叉树b的树路径长度为1+1+2+2+2+2+2+3+3=16
    如果考虑带权路径,路径与权的乘积才是最终的路径长度

    定义

    也称为最优二叉树
    如何构建赫夫曼树
     
     

    如何构建赫夫曼树总结

     

    赫夫曼树的应用-赫夫曼编码

    定义

    数据压缩的原理基于此
  • 相关阅读:
    opencv学习笔记汇总(更新中...)
    C语言字符串基础
    python全栈基础
    吴恩达机器学习008神经元和大脑
    吴恩达机器学习004多元梯度下降
    吴恩达机器学习003矩阵和向量
    吴恩达机器学习002线性回归&梯度下降
    吴恩达机器学习001绪论
    吴恩达机器学习007过拟合&&代价函数&&正则化
    手工(命令行)创建RAC
  • 原文地址:https://www.cnblogs.com/ulysses-you/p/6999282.html
Copyright © 2011-2022 走看看