Day21_二叉树、冒泡、排序

2013年10月29日 星期二 09时45分44秒

回顾:
   链表 - 单向链表和双向链表
     链表数组、数组链表、二维链表(不是很常用)
今天:
   树 - 有序二叉树
   树型结构就是 数据元素是 一对多的父子关系
   树型结构中最简单的就是 二叉树,就是每个父节点最多只能有2个子节点,每个子节点只有一个父节点。每个树都只有一个 跟节点,其它节点都是由 根节点衍生。
   树型结构 都是 先天具有递归特性,因此编码上倚重递归;
   
   二叉树遍历:
   前序遍历 - D L R
   中序遍历 - L D R
   后序遍历 - L R D
   
   几种特殊的二叉树:
     1.满二叉树
       特点: 所有枝节点和根节点都必须有左右子节点 并且 每层节点树必须是最大值
     2.完全二叉树
       特点: 除了最下层,节点数必须是最大值,并且 最下层的节点必须连续的从左向右排列
     3.平衡二叉树
       特点: 每个节点的 左右子树的层差 绝对值 不能超过1
       
    二叉树可以用顺序结构和链式结构实现。但一般都是 链式结构实现
    顺序结构实现二叉树 必须保证二叉树是完全二叉树,不是完全二叉树的必须用空(虚节点)补成完全二叉树再存储,从而避免造成大量空间浪费。
    链式结构的二叉树分为:二叉链表  和 三叉链表
      二叉链表:  数据、左右子节点指针
      三叉链表:  数据、左右子节点指针、父节点指针
      
    有序二叉树 - 每个节点左边的所有节点(左子树)都比 它小(也可以等于),右边的所有节点都比它大(也可以等于)
    有序二叉树的中序遍历 得到的结果是有序的(升序,从小到大)
    
    算法: 广义上说,解决问题的方案就是算法
      学习的算法:排序算法和查找算法
      排序:
        冒泡、选择、插入、快速和归并排序
      查找:
        顺序查找、二分查找
        
      冒泡排序
        算法: 相邻两个比较,如果前面比后面大,交换位置,从第一个元素到最后一个元素比较完毕算一轮,再依次比较前n-1个元素。每轮完成后,确保最大的放在了最后面。
        特点: 平均时间复杂度O(N的平方)
          稳定排序
          对数据的有序性非常敏感(原数据越接近有序,效率越高)
      插入排序
        算法: 先认定第一个元素有序,把第二个元素插入前1个有序数列,保证前2个有序。依次插入第3-N个元素,最后的结果就是前n个元素有序 -> 排序OK
        特点: 平均时间复杂度 O(N的平方)
          稳定排序
          对数据有序性 非常敏感(原数据越接近有序效率越高)
          但由于只移动不交换,所以优于冒泡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值