基础数据结构和算法概念

本文介绍了循环队列的结构和操作,探讨了树和二叉树的性质,包括二叉树的遍历和特殊类型如满二叉树和完全二叉树。此外,文中还涉及堆、哈希表和图的原理,以及排序算法和算法复杂度的概念。
摘要由CSDN通过智能技术生成

在实际应用中,队列的顺序存储结构一般采用循环队列的形式。所谓循环队列,就是将队列存储空间的最后一个 位置绕到第一个位置,形成逻辑上的环状空间。在实际使用循环队列时,为了能区分队满还是队列空,通常需要增加一个标志 S S S。

循环队列主要有两种基本运算:入队运算和退队运算,复杂度都是O(1)O(1)O(1)

  • 入队运算

指在循环队列的队尾加入一个新元素,首先 rear=rear+1 r e a r = r e a r + 1 rear=rear+1, 当 rear=m+1 r e a r = m + 1 rear=m+1 时,置 rear=1 r e a r = 1 rear=1,然后将新元素插入到队尾指针 指向的位置。当 S=1,rear=front S = 1 , r e a r = f r o n t S=1, rear=front,说明队列已满,不能进行入队运算,称为“上溢”。

  • 退队运算

指在循环队列的排头位置退出一个元素并赋给指定的变量。首先 front=front+1 f r o n t = f r o n t + 1 front=front+1, 并当 front=m+1 f r o n t = m + 1 front=m+1 时,置 front=1 f r o n t = 1 front=1, 然后 将排头指针指向的元素赋给指定的变量。当循环队列为空 S=0 S = 0 S=0,不能进行退队运算,这种情况成为“下溢”。

非线性逻辑结构


树是一种简单的非线性结构。树型结构具有以下特点:

  1. 每个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点。

  2. 每一个结点可以有多个后件结点,称为该结点的子结点。没有后件的结点称为叶子结点

  3. 一个结点所拥有的后件个数称为结点的度

  4. 树的最大层次称为树的深度。

二叉树

二叉树是一种树型结构,通常采用链式存储结构,满足以下特性:

  1. 它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于 2 的结点);

  2. 二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的基本性质

  • 在二叉树的第 i i i 层上至多有 2i−12i−12i-1 个结点

  • 深度为 k k k 的二叉树至多有 2k−12k−12k-1 个结点( k≥1 k ≥ 1 k \geq 1)

  • 在任意一个二叉树中,度为 0 的结点总是比度为 2 的结点多一个

  • 具有 N N N 个结点的二叉树,其深度至少为 ⌊log2N⌋+1⌊log2N⌋+1\lfloor log_2 N \rfloor+1

  • 霍夫曼树的带权路径长度 len=2n+1 l e n = 2 n + 1 len = 2n+1; n n n 为所以叶子权重和。

二叉树的遍历

就是遵从某种次序,访问二叉树中的所有结点,使得每个结点仅被访问一次。分为以下几种:

  1. 前序遍历(DLR): 首先访问根结点,然后遍历左子树,最后遍历右子树。

  2. 中序遍历(LDR): 首先遍历左子树,然后根结点,最后右子树

  3. 后序遍历(LRD): 首先遍历左子树,然后

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值