zoukankan      html  css  js  c++  java
  • 第五章学习小结

    一、小结

    1.二叉树

      定义与性质:

      (1) 二叉树有五种基本形态;

      (2) 在二叉树的 第 i 层上至多有 2^(i-l) 个结点(i>=1);

      (3) 深度为 k 的 二叉树至多有 2^k -1 个结点 (k>=1);

      (4) 叶子结点数 = 度为2结点数+1;

      (5) 满二叉树是完全二叉树的一种;还有更常见的非完全二叉树;

      二叉树的存储与遍历:

      (1) 适合用顺序存储结构的二叉树种类较少,更多会使用链式存储结构,但无论如何,都要根据实际问题设计合适的 结点结构 和 存储结构;

      (2) 遍历二叉树是二叉树最基本的操作,其他各种操作的基础;

      (3) 基于二叉树的递归定义有 先序、中序、后序三种遍历算法;时间复杂度为O(n);

      (4) 线索二叉树除了能得到左右孩子结点的信息,还能直接的到结点的前驱和后继信息。

    2.树与森林

      树的存储与遍历:

      (1) 常见的存储结构有双亲表示法、孩子表示法、孩子兄弟法。可根据具体问题作出节省空间或节省时间上的改进;

      (2) 森林或树与二叉树可进行相互转换;

      (3) 森林有两种基于递归定义的遍历方法:先序和中序;

    3.哈夫曼树

      (1) 带权路径长度最小的二叉树称为哈夫曼树;权值越大的结点离根结点越近;

      (2) 左分支标记为 0, 右分支标记为 1,则根结点到每个叶子结点路径上的 0、1序列即为相应字符的编码,如下图

      

    二、感想:

    感觉比第四章简单了一丢丢(可能老师手下留情),因为把树的结点线性化后,基本操作还是基于线性表,只是在解决具体问题时,

    设计怎样的结点、设计怎样的遍历方法能够适用于当前问题,是需要实操前多思考多比较的

  • 相关阅读:
    10g full join 优化
    推荐C++程序员阅读《CLR via C#》
    密码安全之动态盐
    徒弟们对话,遇到sb领导,离职吧
    hdu 1698 线段数的区间更新 以及延迟更新
    嗯。。 差不多是第一道自己搞出的状态方程 hdu4502 有一点点变形的背包
    嗯 第二道线段树题目 对左右节点和下标有了更深的理解 hdu1556
    hdu 4501三重包问题
    入手线段树 hdu1754
    hdu 5672 尺取还是挺好用的
  • 原文地址:https://www.cnblogs.com/jospeer/p/12995808.html
Copyright © 2011-2022 走看看