数据结构——浙大网易云课堂记录(一)树(上篇)

leetcode答案-algo-practice:某事练习 leetcode 答案算法实践 我仍然坚持的问题。 这些花了我最少 30 分钟到最多 1 小时的时间,我不知道如何解决或解决这个问题。 目前为空。 Backlog(还没有尝试过这些,但我想接下来尝试。) 课程表二 最小窗口子串 56. 合并间隔 时间:26分钟 时间复杂度:O(N log N) 其中 N 是间隔数,因为间隔已排序。 空间复杂度:O(1),不需要额外的空间。 108. 将有序数组转换为二叉搜索树 时间:15分钟 时间复杂度:O(N),其中 N 是树中的节点数。 空间复杂度:O(N),内存用于递归调用堆栈。 标签:二叉树,DFS 173. 二叉搜索树迭代器 乒乓:一切顺利 时间:35分钟。 时间复杂度:最初构建节点数组为 O(N),next 和 hasNext 为 O(1)。 空间复杂度:O(N),其中 N 是树中的节点数,用于对数组中的节点进行 Toring。 标签:二叉树,有序遍历 253. 会议室 II 乒乓:一切顺利 时间:28 分钟。 时间复杂度:O(N log N),其中 N 是输入间隔的数量。 O(N log N) 用于排序。 空间复杂度:O(N) 用于存储开 立即下载

课堂链接

前菜:查找

根据某个给定的关键字K,从集合R中找出与K相同的记录。

  • 静态查找:集合中记录是固定的,没有删除和插入操作。
  • 动态查找:有插入、删除操作。
顺序查找

e.g. 静态查找例子:表如下,表头指针Tbl,Tbl -> Length = 10 表示表的长度。查找时候从表尾,从后往前查找,返回元素K的下标。表头(下标为0)不存放数据。

这里写图片描述

常规写法是这样:

/* 在Tbl[n]到Tbl[1]中查找元素K的位置 */
int SequentialSearch (StaticTable *Tbl, ElementType K){
    int i; // now index
    for(i = Tbl -> Length; i > 0 && Tbl -> Element[i] != K; i--);
    return i;
}

注意到每次for循环中总要判断i > 0,这是为了防止查找越界。那么换一种思路,如果查找到最后一个元素,其实也是到达查找的边界。把下标为0的元素的值设为K,最终总会得到Tbl -> Element[i] = K,i的值若为0,则说明遍历了整个列表都没查找到K;若不为0,则返回位置i。这样可以减少循环中的一次比较次数。

int SequentialSearch (StaticTable *Tbl, ElementType K){
    int i; // now index
    Tbl -> Element[0] = K; // Sentinel element
    for(i = Tbl -> Length; i > 0 && Tbl -> Element[i] != K; i--);
    return i; // returns: the index of Element K ; 0 if K is no found
}

这种查找方法,平均查找次数N/2,时间复杂度O(N)。


二分查找

前提:数据有序存放。
这里写图片描述
这里写图片描述
代码如下:

int BinarySearch( StaticTable *Tbl, ElementType K) {
    int left, right, mid, NotFound = -1;
    // 初始值
    left = 1;
    right = Tbl -> length;

    while (left <= right) {
        mid = ( left + right) / 2; // 计算中间元素坐标
        if (Tbl -> Element[mid] < K){
            left = mid + 1;
        }else if (Tbl -> Element[mid] > k){
            right = mid - 1;
        }else{
            return mid
        }
    }
    return NotFound;
}

算法复杂度O(logN)。
[Note]: 如果left 和right 的更新由left = mid+1、right = mid-1 改为left = mid、right = mid,结果会出错,这跟while 里面的条件有关的。本例中条件为left > right 时(查找失败)退出查找,假如在三个数

 6 9 10

中查找8,为了方便,直接用left、mid、right 代表6、9、10。
初始:

left = 6
right = 10

进入比较

mid = 9
9 > 8  -->left不变         left = 6
10 > 8 -->right变为mid的值  right = 9

mid = 6
6 < 8  --> left变为mid的值 left = 6
6 < 10 --> right不变       right = 9

此时left 和right 相邻,并不破坏while循环规则left <= right,因此进入死循环,永远在6和9之间查找8(当然是找不到的了)。
为了避免这种情况,每次left 和right 都会避开mid 值,哪怕最后只剩两个元素时候,如果mid恰好是left 或right 中的一个,则left+1 和right+1 中有一个会进行,总能找到mid;如果mid都不等于left 或right 中的任一个,则left+1 和right+1 都会执行,最终带来left > right 的结果,结束循环。
若想用left = mid 和right = mid 来作为更新条件,则需改写

    while (left + 1 < right) {
        mid = ( left + right) / 2; // 计算中间元素坐标
        if (Tbl -> Element[mid] < K){
            left = mid;
        }else {
            right = mid - 1;
        }
    }
    // 剩下两个元素,需要判断
    if (Tbl -> Element[left] == K) return left;
    if (Tbl -> Element[right] == K) return right;
    return NotFound;
二分查找判定树

假设查找11个元素。如果查找元素在位置6,则只需要查找一次;如果查找位置在4,则分别在1-6之间,3-6之间,4-6之间查找,mid 的值以此更新:6 -> 3 -> 4,在判定数上可以找到该路径。二分查找判定树性质如下:(注:ASL 指平均成功查找次数)

这里写图片描述

启示:用树来存放数据,查删改可以快很多。

树的一些概念

一棵有N个节点的数,它的边有N-1 条。树是连通N个节点所用边最少的数据结构。
概念:

  • 节点的度(Degree):节点的子树个数
  • 树的度:树所有节点的最大度数
  • 叶节点(Leaf):度数为0的节点
  • 子节点(Child)、父节点(Father)、兄弟节点(Sibling)、祖先节点(Ancestor)、子孙节点(Descendant)
  • 路和路径长度:节点n1到nk的路径为一个节点序列n1, n2, ... ,nk,这条路径上边的长度为该路径长度。
  • 节点的层次(Level):根节点层次为1
  • 树的高度:最深层次

树的表示

这里写图片描述

  • 用数组:太复杂
  • 用链表:浪费空间

所以,用另一种方法表示
这里写图片描述
把脖子向左歪45度,看到一棵很漂亮的二叉树
这里写图片描述

课后题

在分量1~11的数组中按从小到大顺序存放11个元素,如果进行二分查找,查找次数最少的元素位于什么位置?
A.1
B.5
C.6
D.11

一棵度为 m的树有n个节点。若每个节点直接用m个链指向相应的儿子,则表示这个树所需要的总空间是n*(m+1) (假定每个链以及表示节点的数据域都是一个单位空间)。当采用儿子/兄弟(First Child/Next Sibling)表示法时,所需的总空间是:
A.3n
B.2n
C.n*m
D.n*(m-1)

二叉树

几种特殊二叉树
  • 斜二叉树(Skewed Binary Tree)
  • 完美二叉树(Perfect Binary Tree)/满二叉树(Full Binary Tree)
  • 完全二叉树(Complete Binary Tree)
二叉树性质
  • 第i层最多有2^(i-1) 个节点
  • 深度为k 的二叉树最大节点总数为2^k - 1 (每层累加)
  • 记非空二叉树中,度数为0、1、2的节点分别为n0、n1、n2,则有n0 = n2 + 1。
    pf:
    从树的根节点开始往下看,下方的边看做是上方的节点的贡献
    节点总数=边的总数+1 节 点 总 数 = 边 的 总 数 + 1

    n0+n1+n2=0∗n0+1∗n1+2∗n2 n 0 + n 1 + n 2 = 0 ∗ n 0 + 1 ∗ n 1 + 2 ∗ n 2

    化简可得结果
二叉树存储结构
  • 完全二叉树的顺序存储
    这里写图片描述
  • 链表存储
typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode {
    ElementType Data;
    BinTree Left;
    BinTree Right;
}

这里写图片描述

二叉树的递归遍历(以链式存储为例)
先序遍历
  1. 先访问根节点
  2. 先序遍历左子树
  3. 先序遍历右子树
void PreOrderTraversal( BinTree BT) {
    if (BT) {
        printf("%d", BT -> Data);
        PreOrderTraversal( BT -> Left);
        PreOrderTraversal( BT -> Right);
    }
}

这里写图片描述

中序遍历
  1. 中序遍历左子树
  2. 访问根节点
  3. 中序遍历右子树
void InOrderTraversal( BinTree BT) {
    if (BT) {
        InOrderTraversal( BT -> Left);
        printf("%d", BT -> Data);
        InOrderTraversal( BT -> Right);
    }
}

这里写图片描述

后序遍历
  1. 后序遍历左子树
  2. 后序遍历右子树
  3. 访问根节点
void PostOrderTraversal( BinTree BT) {
    if (BT) {
        PostOrderTraversal( BT -> Left);
        PostOrderTraversal( BT -> Right);
        printf("%d", BT -> Data);
    }
}

这里写图片描述

递归遍历时候的路径

按图中路径,每个节点会被遇到三次,在不同相遇时刻访问该节点,对应不同的遍历方式。
这里写图片描述

二叉树的非递归遍历

思路:遇到节点的时候,不该访问的话就压入栈,访问便弹出。

中序遍历
  1. 遇到一个节点,就把它压栈,并去遍历它的左子树。
  2. 当左子树遍历结束后,从栈顶弹出这个节点并访问它。
  3. 按其右指针去中序遍历右子树。
void InOrderTraversal(BinTree BT){
    BinTree T = BT;
    Stack S = CreateStack(MAXZIZE); // 创建并初始化堆栈
    while(T || !isEmpty(S)){
        while(T){ // 一直向左,将沿途节点入栈
            Push(S, T);
            T = T -> Left;
        }
        while(!isEmpty(S)){
            T = Pop(S); // 节点弹出堆栈
            printf("%d", T -> Data); // 访问节点
            T = T -> Right; // 转向右子树
        }
    }
}
先序遍历
  1. 遇到一个节点,访问它,并去
  2. 遍历它的左子树。
  3. 先序遍历右子树。
void PreOrderTraversal(BinTree BT){
    BinTree T = BT;
    Stack S = CreateStack(MAXZIZE);
    while(T || !isEmpty(S)){
        while(T){
            printf("%d", T -> Data);
            Push(T, S);
            T = T -> Left;
        }
        while(!isEmpty(S)){
            T = Pop(S);
            T = T -> Right;
        }
    }
}
后续遍历
  1. 遇到一个节点,压栈。
  2. 如果有左子树,访问它的左子树,否则访问右子树。
  3. 如果没有左子树,也没有右子树,访问这个节点。
void PostOrderTraversal(BinTree BT){
    BinTree T = BT;
    Stack S = CreateStack(MAXZIZE);
    while(T || !isEmpty(S)){
        while(T){
            Push(T, S);
            T = T -> Left;
        }
        T = Pop(S); // 到达最左端
        if(!T -> Right && !isEmpty(S)){
            printf("%d", T -> Data);
        }else {
            T = T -> Right;
        }
    }
}
层序遍历

遇到一个节点,如果访问它的左儿子,不保存当前位置信息,那右儿子就会“丢失”。此时的思路是把该父节点,或是右儿子,通过栈/队列存起来。
层序遍历基本过程:根节点先入队,然后

  1. 从队列中取出一个元素
  2. 访问这个元素
  3. 如果这个元素的左、右儿子非空,将左、右儿子按顺序入队。
void LevelOrderTraversal(BinTree BT){
    Queue Q;
    Q = CreateQueue(MaxSize);
    AddQ(Q, BT); // 根节点入队
    while(!isEmpty(Q)){
        T = Delete(Q);
        printf("%d",T -> Data );
        if(T -> Left) AddQ(T -> Left);
        if(T -> Right) Push(T -> Right);
    }
}

这里写图片描述

遍历二叉树的应用
输出叶子节点

在访问节点过程中增加判断,若左右子树都为空,输出该节点。

void PreOrderPrintfLeave(BinTree BT){
    if(BT){
        if(!T -> Left && !T -> Right){
            printf('%d', T -> Data);
        }
        PreOrderPrintfLeave(T -> Left);
        PreOrderPrintfLeave(T -> Right);
    }
}
求二叉树的高度

分别求左子树和右子树的高度,取两者中最大值,加一。

int PostOrderGetHeight(BinTree BT){
    int HL, HR, MaxH;
    if(BT){
        HL = PostOrderGetHeight(BT -> Left);
        HR = PostOrderGetHeight(BT -> Right);
        MaxH = (HL > HR) ? HL : HR;
        return MaxH + 1;
    }else {
        return 0;
    }
}
由两种遍历序列确定二叉树

对一棵所有节点没有左儿子(或没有右儿子),它的前序、后序遍历结果是一样的。所以要由遍历序列确定一棵树,还需要加上中序遍历。
这里写图片描述
[Note]:找根节点:先序的根节点在(子)序列的第一个,后序的根节点在(子)序列的最后一个。

C语言的数据结构实现,配套课程是浙江大学陈越老师。 本人根据浙江大学陈越老师的课程,自己也动手写了些数据结构的C语言实现,比较初级,拿出来和大家分享交流。 立即下载

相关推荐

浙大 数据结构与算法60讲 网盘地址

浙大 数据结构与算法60讲 网盘地址,保证完整,好用。

数据结构错题笔记

课程分类MOOC-浙江大学-数据结构第2讲 线性结构小测验 MOOC-浙江大学-数据结构 第2讲 线性结构 小测验 下列函数试图求链式存储的线性表的表长,是否正确? int Length ( List *PtrL ) { List *p = PtrL; int j = 0; while ( p ) { p++; j++; } return j; } A

weixin_48421315的博客 2123

5-->详解《switch 数据接收驱动框架、mtk7621集成交换芯片mt7530》之一

SWITCH 交换芯片驱动配置: 一、 配置 MDIO 总线 二、配置 MAC 接口 三、基于 MAC 的 DMA 配置 四、设备驱动结构体 五、数据收发包

weixin_38387929的博客 1万+

[渝粤教育] 兴义民族师范学院 数据结构 参考 资料

Today we delivered the above consignment 回答 board SS “Hardi” which will sail for 教育 -数据结构-章节资料考试资料-兴义民族师范学院【】 小测验:算法复杂度 1、【单选题】下列函数中,哪个函数具有最快的增长速度: A、 B、 C、 D、 参考资料【 】 2、【单选题】下面一段代码的时间复杂度是?if ( A B ) { for ( i=0; iN; i++ ) for ( j=NN; ji; j-- ) A += B

渝粤题库 1225

风力发电机并网模型建立及仿真验证

传统能源日益匮乏,环境污染日趋严重,全球向安全、可靠和环保的可持续能源体系转型迫在眉睫,风电迎来了重要的发展契机。近年来,全球风电迅猛发展,我国已成为世界风电新增装机容量第一的国家。然而,随着风电规模的不断增大,风电场接入对系统影响不容忽视。随着变速恒频风力发电系统优越的性能突出和大容量电力电子技术的成熟,风速随机性引起的功率波动及故障情况下的动态响应,对电能质量,系统电压、频率的稳定性产生的影响需要深入研究。因而,本文结合实际项目,针对变速恒频风力发电系统建模,端口动态特性及对电网电能质量、运行稳定性的影

毕业设计区博客 1639

新手避坑指南:用镭神C32和KVH 1750 IMU做标定,为什么直接上lidar_align会失败?

本文详细解析了使用镭神C32激光雷达和KVH 1750 IMU进行标定时常见的失败原因及解决方案。从IMU的微分传感器特性到Lidar-IMU标定的数学本质,再到可行的标定方案和实操注意事项,帮助新手避开认知陷阱,掌握正确的标定方法。

weixin_30162121的博客 327

(浙大-19-夏-数据结构学习笔记)树的初步认识

啥子是树呢? 哈哈,先来个铺垫,首先呢,介绍一下查找: 静态查找 1)顺序查找: 第一个节点处漏了K,应该补进去 typedef struct Lnode *List; struct Lnode{ int ElementType[Maxsize]; int Length; }; int SequentialSearch(List Tbl,ElementType K) { int i;...

计算机科学与技术专业学生的成长之路 606

仿真每日一练 | 有限元模态分析详解

结构的振动一直是工业领域产品分析的重点,在振动的仿真分析中,模态分析是其最基本的分析类型,通过研究结构的固有频率和振型对产品的设计提供指导。2.2、在interaction模块,通过special->Spring,在各点之间分别创建弹簧单元,弹簧刚度为1000。2.1、在interaction模块,创建两个RP点,与两侧RP点各间隔100大小,如图3所示;其中M、K、C均为n*n的矩阵,s、x、v为n*1的矢量,n为系统自由度数量。3、在Assembly模块创建装配体,两点之间的距离为100,如图2所示;

ansysxuexizhe的博客 1655

数据结构基础:P3.1-树(一)--->树与树的表示

本系列文章为浙江大学陈越、何钦铭数据结构学习笔记,前面的系列文章链接如下: 数据结构基础:P1-基本概念 数据结构基础:P2.1-线性结构—>线性表 数据结构基础:P2.2-线性结构—>堆栈 数据结构基础:P2.3-线性结构—>队列 数据结构基础:P2.4-应用实例—>多项式加法运算 数据结构基础:P2.5-应用实例—>多项式乘法与加法运算-C实现 文章目录一、引子(顺序查找)1.1 树与查找的定义1.2 顺序查找二、引子(二分查找)2.1 二分查找的思想2.2 示例三、引子(二分查找实现)四、树的定义和

InnerPeaceHQ的博客 1576

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8754

Cursor使用教程,有点难

Cursor Code Editor 不仅仅是一个代码编辑器,它更是一个集成了 AI 的全功能开发环境,帮助你从代码编写到优化的整个过程变得更加智能和高效。它通过内置的 AI 代码补全、错误检测和自动修复功能,大大减少了手动编写代码的负担,帮助你快速完成开发任务。同时,Cursor 还与多种前沿的 AI 大模型集成,包括 OpenAI 的 GPT-4o、Claude 3.5 和 Meta 的 Llama 3.1。

xiaofeitunAI的博客 1万+

Struct_chapter3_Tree

Struct_chapter3_Tree 3.1 tree and the expression of tree concept of tree an excellent struct to expresses hierarchical relationship(层次关系) more efficienct Searching 0x01 static searching notice :...

Daria 542

Unity AR开发实战:从Vuforia图片识别到实体识别全流程解析

增强现实(AR)技术通过计算机视觉算法将虚拟信息叠加到现实世界,其核心原理在于对现实环境的感知与理解。在移动端AR开发中,图像识别与物体识别是实现虚实融合的关键技术,它们决定了虚拟内容能否准确、稳定地与现实对象对齐。Vuforia作为成熟的商业AR SDK,为开发者提供了从平面图像识别(Image Target)到三维实体识别(Model Target)的完整解决方案,极大降低了计算机视觉技术的应用门槛。在工程实践中,Vuforia通过封装复杂的特征提取与匹配算法,使开发者能够专注于交互设计与内容制作,广泛

weixin_30972263的博客 301

数据结构——浙大网易云课堂记录(一)树(中篇)

二叉搜索树 查找操作Find 插入操作Insert 删除操作Delete 平衡二叉树 平衡二叉树高度 平衡二叉树的调整 RR旋转 LL旋转 LR旋转 RL旋转 二叉搜索树 利用二叉树搜索树(BST,Binary Search Tree),提高查找效率。设左儿子的节点值&lt;父节点值&lt;右儿子节点值,在树中搜索X,每遇到一个节点,将X 的值和节点值做...

扬扬羊的博客 767

「UG/NX」多功能dll集成一个dll的三种方法

C++多功能集成一个dll的三种方法。

何曾参静谧的博客 1390

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PAT数据结构陈越——自测04

最近在看网易云课堂的浙大数据结构公开课视频。跟着做了一些基础的习题。这是其中一道。 题目如下:00-自测4. Have Fun with Numbers (20)时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Notice that the number 123456789 is a 9-di

smtctc的专栏 1286

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数据结构学习笔记:什么是算法?

学习浙大陈越老师数据结构课程,将重点PPT纪录在此,完整ppt见https://mooc.study.163.com/learn/1000033001?tid=2001462004#/learn/content?type=detail&amp;id=2001778302&amp;cid=2001783591。  ...

kkkkkiko的博客 345

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

关于“希尔排序”的一点思考(参考浙大陈越老师的教学视频)

最近复习了一下七大排序算法,到 “希尔排序” 这里时,看了一下浙大的数据结构视频(网易云课堂)。 看了几分钟就开始尝试着自己用java实现(先不看视频中给出的源代码),结果发现一个有意思的过程,现在记录一下。 要理解 “希尔排序” ,得先理解 “插入排序”,因为前者相当于后者的进阶。 1.插入排序 插入排序的排序策略很简单,将数组分为两堆:已排序 + 未排序,然后将未排序的元素,一个...

carl95271的博客 457

北大信科计算机考研专业真题,【状元的血泪史】2019PKU信科ee跨考cs经验贴

当你用尽全力去做一件事,为之做好充分的准备时,一切结果的到来都显得那么的顺其自然。希望我的经历能够为学弟学妹少走弯路,提供更多的帮助。。。关键词:计应、跨考cs、初试、复试、导师先说一下大致情况:本人本科北航ee,2019报的是信科计算机应用技术方向,初试71+70+120+113=374,在计应排第二,CS方向总排名第六。机试4个,复试之后总排名计应第一,顺利被北大计算所录取。考研期间研芝士社区...

weixin_35788791的博客 1943

CS+CV

2017年3月开学,始终感觉自己计算机基础薄弱,加上之前自己也开始对机器学习,深度学习有一些了解,始终感觉没有入门。自己开始规划系统学习计算机软件(CS)和计算机视觉(CV)的基础知识。@2017/9/04/update 2017上半年巩固CS基础课程 CS_class repository 数据结构 操作系统 数据库系统 计算机网络 算法分析和设计 侯捷STL分析 牛课网直播开课精讲 总结...

weixin_34279579的博客 1036

大佬算法校招经验总结(拼多多、小米、华为、百度等)

点上方蓝字视学算法获取更多干货在右上方···设为星标★,与你不见不散转载于 :工大菜鸡,已获授权https://www.nowcoder.com/discuss/2...

zandaoguang的博客 1295

[DS][Tree][PAT][List Leaves]

网易云课堂浙大数据结构课第三周 树(上)PAT: List Leaves解答原题在这里 关键问题 如何根据输入创建树? 如何根据建好的二叉树找出叶子节点?且顺序为从上到下,从左到右? 如何根据输入创建树? 题目先输入N (N<=10),表示有个结点,节点数字从0到N-1编号; 然后从编号为0的结点到N-1,依次输入每个结点的左孩子编号和右孩子编号,没有某孩子则输入-, 将孩子信息记录到两个数组

许开拓的专栏 484

送你一个励志故事(转载)

转载 MARK一下 作者:守望者1028 链接:https://www.nowcoder.com/discuss/55353 来源:牛客网   本面试主要分成三块内容: 第一部分:知识水平的提升方法与面试技巧,针对非科班或者知识面薄弱的同学,讲解准备校招与校招过程中应该具备的能力与技巧,包括但不限于推荐书单,技能说明,面试技巧等。 第二部分:大体上描述C++研发或者后台开发在笔试面试中高频出现...

cfycyf的博客 1293

数据结构 树 思考题

题目1:有一个m棵树的集合(也叫森林)共有k条边,问这m颗树共有多少个结点? 如图,该树一共有5个节点,并且有4条边。因为根节点是没有边的。 每个树都有一个根节点,所以m颗树,一共有m个根节点,再加上一共有k条边,总共m+k个节点。 题目2:在用“儿子-兄弟”法表示的树中,如果从根结点开始访问其“次子”的“次子”,所经过的结点数与下面哪种情况一样?(注意:比较的是结点数,而不是路径) ...

Dezeming的博客 1万+

2020-8-20树

树与树的表示 1:什么是树? 在客观世界中许多事物存在层次关系,比如想要表示人类社会家谱,社会组织结构等(层次关系)时,常用树。 这种层次关系就是树。 2:为什么要在这些管理中采用树? 因为分层次组织在管理上具有更高的效率。 3:介绍数据管理的基本操作之一:查找 如何实现有效率的查找? 查找:给定一个关键字K在某个集合R中找到与K相同的路径。 查找分为两部分静态查找和动态查找。 其中静态查找不涉及插入和删除,只是查找。它的记录是固定的。 而动态查找会可能包含插入和删除。记录是动态变化的。 4-1:操作: 对

yanlingyun0210的博客 520

树的一些题

1、有一个m棵树的集合(也叫森林)共有k条边,这m颗树共有多少个结点? 每棵树的节点都比边多1有m棵树,所以总节点数比总边数多m所以一共有m+k个节点。 2、在分量1~11的数组中按从小到大顺序存放11个元素,如果用从头到尾顺序查找和二分查找分别查找这11个元素,哪个位置的元素在这两种方法的查找中总次数最少? 1 3、一棵度为 m的树有n个节点。若每个节点直接用m个链指向相应的儿子,则表示...

weixin_30718391的博客 1426
上一篇: JavaScript——第7章 函数表达式
下一篇: 数据结构——浙大网易云课堂记录(一)树(中篇)
扬扬羊
博客等级 码龄9年 11粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值