数据结构与算法-基础(九)二叉搜索树

摘要 如果使用线性表存放 n 个元素时,时间复杂度是 O(n)。如果使用二分法搜索,可以降低时间复杂度,为 O(logn),但是添加和删除的平均时间复杂度是 O(n)。 使用二叉搜索树,可以让添加、删除、搜索的最坏时间复杂度优化到 O(logn)。 二叉搜索树,英文为 Binary Search T ... »

shsuper

数据结构与算法-基础(八)遍历二叉树

遍历是数据结构中的常见操作,就是把所有的元素遍历一遍。 线性结构的遍历无非是两种,正序遍历和逆序遍历,也就是从头依次遍历或者从尾依次遍历。 二叉树的遍历方式有 4 种,是根据不同的节点访问顺序来区分: 遍历方法 访问顺序 备注 前序遍历(Preorder Traversal) 根节点、左子树、右子树 ... »

shsuper

【数据结构与算法】二叉树的 Morris 遍历(前序、中序、后序)

前置说明 不了解二叉树非递归遍历的可以看我之前的文章【数据结构与算法】二叉树模板及例题 Morris 遍历 概述 Morris 遍历是一种遍历二叉树的方式,并且时间复杂度O(N),额外空间复杂度O(1) 。通过利用原树中大量空闲指针的方式,达到节省空间的目的 分析 设一棵二叉树有 n 个节点,则所有 ... »

【数据结构与算法】第二章练习题

1、社顺序表用数组A[]表示,表中元素存储在数组中下标0~m+n-1的范围内,前m个元素递增有序,后n个元素递增有序,设计算法使得顺序表有序 1)算法基本思想 2)算法描述 3)时间和空间复杂度 答: »

dream-to-pku

数据结构与算法——弗洛伊德(Floyd)算法

介绍 和 Dijkstra 算法一样,弗洛伊德(Floyd)算法 也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978 年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名 弗洛伊德算法(Floyd)计算图中 各个顶点之间 的最短路径,比如:先从 A 出发到 ... »

二叉树的四种遍历(遍历与非遍历)

二叉树的四种遍历(遍历与非遍历) 先序遍历与后序遍历 先序遍历根节点,再遍历左子树,再遍历右子树。 后序遍历先遍历左子树,再遍历右子树,再遍历根节点。 先序遍历递归实现: public static void preOrderByRecursion(TreeNode root) { // 打印节点值 ... »

数据结构与算法——迪杰斯特拉(Dijkstra)算法

tip:这个算法真的很难讲解,有些地方只能意会了,多思考多看几遍还是可以弄懂的。 应用场景-最短路径问题 战争时期,胜利乡有 7 个村庄 (A, B, C, D, E, F, G) ,现在有六个邮差,从 G 点出发,需要分别把邮件分别送到 A, B, C , D, E, F 六个村庄,各个村庄的距离 ... »

数据结构与算法复习——1、算法分析入门

数据结构与算法复习 第一学期的计算概论让我认识到在算法方面我已经失却了所有能力,因此寒假务必来复习一下算法和数据结构。 复习准备 复习主要使用: [美]Mark Allen Weiss 、冯舜玺 译《 »

halifuda

数据结构与算法——克鲁斯卡尔(Kruskal)算法

应用场景-公交站问题 某城市新增 7 个站点(A, B, C, D, E, F, G) ,现在 需要修路把 7 个站点连通,各个站点的距离用边线表示(权) ,比如 A – B 距离 12公里 问:如何修路保证 各个站点都能连通,并且 总的修建公路总里程最短? 如上图所示:要求和前面的普利姆算法中的修 ... »

【数据结构与算法】中缀表达式转后缀表达式以及后缀表达式的计算

中缀表达式转后缀表达式 方式一 步骤 1️⃣ 如果遇到操作数,我们就直接将其输出。 2️⃣ 如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中。 3️⃣ 如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。 4️⃣ 如果遇到任何其他 ... »

数据结构与算法-基础(七)完全二叉树

完全二叉树判断(判断) 完全二叉树的叶子节点只会出现最后两层,且最后一层的叶子节点都靠左对齐。根据定义来看,度为 1 的节点只会在左子树,度为 1 的节点要么是 1 个,要么是 0 个。 完全二叉树属于二叉树,即每个节点的度最大为 2。 度:节点拥有 n 棵子树,就是度为 n。 判断完全二叉树之前, ... »

shsuper

数据结构与算法(九)--二分查找

一、二分查找 二分查找介绍、实现 二分查找使用场景 二分查找的变种问题 二、基本二分查找 1. 定义 :二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将 »

liweiweicode

数据结构与算法——贪心算法

应用场景-集合覆盖问题 贪心算法可以解决很多场景的问题,这里以集合覆盖问题为例。 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号? 广播台 覆盖地区 K1 "北京", "上海", "天津" K2 "广州", "北京", "深圳" K3 ... »