美文网首页
数据结构2:链表,树的基本介绍

数据结构2:链表,树的基本介绍

作者: 机智的老刘明同志 | 来源:发表于2020-01-31 21:49 被阅读0次

    7.链表(LinkedList)
        7.1 定义
        7.2 链表实现图
        7.3 约瑟夫环问题
        7.4 如何快读找到一个链表的中间结点?(快慢指针遍历法)
        7.5 链表的应用场景
        7.6 链表与数组的对比
    8. 树
        8.1 树的基本概念
        8.2 树的特点
        8.3 树中的常用术语
        8.4 树的分类


    7.链表(LinkedList)

        7.1 定义

            链表是一种在物理存储单元上非连接,非顺序的存储结构。链表由一系列节点组成,每个节点包括两个部分:一个是存储数据的数据域,另一个是存储下一个节点地址的指针域

        7.2 链表实现图

        7.3 约瑟夫环问题

            n个人围成一个圆圈,第K个人从1开始顺时针报数,报到第m个人,令其出列,然后再从下一个人开始从1顺时针报数,报到第m个人,再令其出列。求出出列顺序

        7.4 如何快读找到一个链表的中间结点?(快慢指针遍历法)

            普通方法:循环单链表,确定单链表的长度,然后循环长度1/2确定中间节点.
            缺点: 需要遍历  L+L/2 次 ,算法难度 O(L+L/2)=O(3L/2) 

            快慢指针遍历法:A指针每次移动1个节点,B指针每次移动2个节点。当B到达end的时候,A的位置即为中点
            优点: 需要遍历 L/2 次, 算法复杂度O(L/2) 

        7.5 链表的应用场景

            单链表
            1.删除时,只适合删除第一个元素
            2.添加时,只添加到第一个元素后面或者第一个元素前面
            3.属于单向迭代器,只能前进/后退,查找效率极差,不适合大量查询
            这种典型的应用场合是各类缓冲池和栈的实现

            双向链表
            1.删除时,可以删除任意元素,而只需要极小的开销
            2.添加时,当直到他的前一个或者后一个位置的元素时,只需要极小的开销
            3.属于单向迭代器,可以前进和后退,但是同样需要遍历,效率跟单向链表一样,不适合大量查询
            这种典型的应用场合是各种不需要排序的数据列表管理

        7.6 链表与数组的对比

            链表与数组最大的区别之一就是链表内存空间不连续,不可以随机访问。
            数组连续空间更利于CPU缓存;链表可充分利用内存碎片

    8. 树

        8.1 树的基本概念

            由n(n>=1)个有限结点组成⼀个具有层次关系的集合。把它叫做“树”是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。

        8.2 树的特点

             ①每个节点有零个或多个⼦节点;
            ②没有⽗节点的节点称为根节点;
            ③每⼀个非根节点有且只有⼀个 ⽗节点;
            ④除了根节点外,每个⼦节点可以分为多个不相交的⼦树; 

        8.3 树中的常用术语 

            ①路径:顺着节点的边从⼀个节点⾛到另⼀个节点,所经过的节点的顺序排列就称为“路径”。
            ②根:树 顶端的节点称为根。⼀棵树只有⼀个根,如果要把⼀个节点和边的集合称为树,那么从根到其他任何⼀ 个节点都必须有且只有⼀条
            ③父节点:若⼀个节点含有⼦节点,则这个节点称为其⼦节点的⽗节点;
            ④子节点:⼀个节点含有的⼦树的根节点称为该节点的⼦节点;
            ⑤兄弟节点:具有相同⽗节点的节点互称为兄弟节点;
            ⑥叶节点:没 有子节点的节点称为叶节点,也叫叶⼦节点,
            ⑦⼦树:每个节点都可以作为⼦树的根,它和它所有的⼦节点、⼦节点的⼦节点等都包含在⼦树中。
            ⑧节点的层次: 从根开始定义,根为第1层,根的⼦节点为第2层,以此类推。
            ⑨深度:对于任意节点n,n的深度为从 根到n的唯⼀路径⻓,根的深度为0;
            ⑩⾼度:对于任意节点n,n的⾼度为从n到⼀⽚树叶的最⻓路径 ⻓,所有树叶的⾼度为0; 

        8.4 树的分类

            按照类型来分:

                1. ⽆序树:树中任意节点的⼦结点之间没有顺序关系,这种树称为⽆序树,也称为⾃由树;
                2. 有序树:树中任意节点的⼦结点之间有顺序关系,这种树称为有序树;
                3. ⼆叉树:每个节点最多含有两个⼦树的树称为⼆叉树;
                4. 完全⼆叉树:最后一层叶子结点都靠左对齐。
                5. 满⼆叉树:只要有子结点,就必然是有两个
                6. 霍夫曼树:带权路径最短的⼆叉树称为哈夫曼树或最优⼆叉树;

            按算法上来分:

                ⼆叉查找树(⼆叉排序树)、平衡⼆叉树(AVL树)、红⿊树、B-树、B+树、字典树(trie树)、后缀树、⼴义后缀树。

        

    相关文章

      网友评论

          本文标题:数据结构2:链表,树的基本介绍

          本文链接:https://www.haomeiwen.com/subject/thogthtx.html