zoukankan      html  css  js  c++  java
  • 数据结构 —— 递归和树

    概况:

    递归和分治

    • 递归中用到了分治法。
    • 分治法的思想简单概括就是“分而治之”。
    • 递归实际使用“栈”来实现的。
    • 递归包括递归方程、临界条件:

    • EX:实现随机斐波那契数列?汉诺塔?八皇后-->N皇后?
    • 时间复杂度:递归时间复杂度是很大的。

           So可以用记忆递归法:牺牲空间,换取时间。(办法:放到数组里,数组空间浪费大,但读取快)

         Ex:HDU 2041 超级楼梯、HDU 2044  一只小蜜蜂...

    • 综上,做递归的题,要先分析,再总结出递归方程。

        Ex:HDU 2050 折线分割平面 (标准递归题)

    • 二分搜索(大整数的乘法、矩阵乘法(棋盘覆盖))
    • 合并排序
    • 快速排序

    • 树的分支最多有2个。又叫孩子数。结点的左孩子,右孩子。
    • 度是孩子个数。
    • 叶子结点:度为0
    • 基本概念:
      树:树要么为空,要么由根结点和n(n>=0)棵子树组成
      森林:由m(m>=0)棵树组成
      结点的度:结点拥有的子树数
      树的度:树内各结点度的最大值
      叶子:度为零的结点,也称终端结点。
      结点的层次:从根开始为第1层,根的孩子为第2层,依此类推。
      树的深度:树内结点的最大层次
      有序树和无序树:如果将树中结点各子树看成是从左到右有次序的,称之有序,否则无序。
     
    • 树的遍历:
    • Huffman树:
      一个无序数列,取这个数列中最小的两个数相加,和替代原来数组中原来这两个数,并作为二叉树中一个结点以及结点的两个孩子,不断重复这个过程,直到最后  构成一棵唯一的二叉树。
      Ex:HDU 1710、HDU 1053
     
    • 并查集:
      由“并”和“查”组成。
    • find();  //查。查找某个元素的根(root)元素是谁,返回根元素的值。
    • merge();    //并。如果查(find)出的根(root)元素相同,说明有联系,将有联系的元素并到一个集合中。
      Ex:HDU 1232  //这道题就是求最后有几个集合,只要求出来了,就做出来了。
     

     

    Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    水题大战Vol.3 B. DP搬运工2
    火题小战 C. 情侣?给我烧了!
    火题小战 B. barbeque
    火题小战 A.玩个球
    P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表
    NOI2020D1T1美食家
    Java 的随机数
    MySQL 配置文件的配置
    NOIP2020准(ge)备(zi)日记
    android开发EditText禁止输入中文密码的解决方法
  • 原文地址:https://www.cnblogs.com/yym2013/p/3246586.html
Copyright © 2011-2022 走看看