zoukankan      html  css  js  c++  java
  • 前端数据结构-栈,链表,队列,树

    参考学习:
    https://blog.csdn.net/haoshidai/article/details/52263191
    的应用:首先是十进制转二进制问题,以及任意进制转换的算法;然后是平衡圆括号问题;最后,学习如何用栈解决汉诺塔问题。
    队列:队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。 队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
    链表:链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。
    单向链表 双向链表 循环链表
    单向链表:
    在这里插入图片描述
    双向链表:
    在这里插入图片描述
    循环链表:
    在这里插入图片描述
    :树的特点:
    ①每个节点有零个或多个子节点;
    ②没有父节点的节点称为根节点;
    ③每一个非根节点有且只有一个父节点;
    ④除了根节点外,每个子节点可以分为多个不相交的子树;
    度,叶子节点,根节点,父节点,子节点,深度,高度:

    结点的高度:从该节点向下分支的叶节点开始自底向上逐层累加。
    结点的深度:从根节点开始自顶向下逐层累加。
    树的高度就是指最底层的叶子结点到根结点的距离(眼睛从下往上看的数数,相当于在井底往上看)
    树的深度就是根结点到最底层的叶子结点的距离(眼睛从上往下看的数数,相当于从井盖往下看)
    对于整棵树来说,最深的叶结点的深度就是树的深度;树根的高度就是树的高度。这样树的高度和深度是相等的。

    在二叉树的概念下又衍生出满二叉树和完全二叉树的概念
    

    满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值,所有叶子结点必须在同一层上
    完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~(h-1)层) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
    二叉树的遍历方式

    先序遍历:先根节点->遍历左子树->遍历右子树
    中序遍历:遍历左子树->根节点->遍历右子树
    后序遍历:遍历左子树->遍历右子树->根节点
    在这里插入图片描述
    有关树的应用:二叉查找树(二叉排序树)、平衡二叉树(AVL树)、红黑树、B-树、B+树、字典树(trie树)、后缀树、广义后缀树,哈弗曼树, 最小生成树Kruskal。
    参考学习:https://www.cnblogs.com/xiaohuochai/p/8175716.html

  • 相关阅读:
    Multithread 之 synchronous
    【转】windows exe文件加载
    Transparent 之 SetLayeredWindowAttributes
    任意目录运行vs2005 tools
    【转】volatile
    Qt1命令行编译
    初识Qt
    typedef使用一
    Qthello
    源文件包含源文件
  • 原文地址:https://www.cnblogs.com/princeness/p/11664868.html
Copyright © 2011-2022 走看看