给出以下算法的时间复杂度
时间复杂度的计算方法

时间复杂度的计算方法时间复杂度是算法效率的一种度量,它表示随着问题规模的增大,算法的运行时间的增长率。
在计算机科学中,我们常常需要分析算法的时间复杂度,以便选择最优的算法来解决问题。
本文将介绍时间复杂度的计算方法,帮助读者更好地理解和分析算法的效率。
首先,我们需要了解时间复杂度的概念。
时间复杂度通常用大O符号(O(n))来表示,其中n代表输入规模。
它描述了算法的运行时间与输入规模之间的关系,即算法的时间消耗随着输入规模的增大而增大的趋势。
时间复杂度越低,算法的效率越高。
接下来,我们来看一些常见的时间复杂度计算方法。
首先是常数时间复杂度O(1),它表示算法的运行时间与输入规模无关,即无论输入规模大小,算法的运行时间都保持不变。
例如,对一个数组进行索引操作就是常数时间复杂度的算法。
其次是线性时间复杂度O(n),它表示算法的运行时间与输入规模成线性关系,即随着输入规模的增大,算法的运行时间呈现线性增长趋势。
例如,对一个包含n个元素的数组进行遍历操作就是线性时间复杂度的算法。
再次是对数时间复杂度O(log n),它表示算法的运行时间与输入规模的对数成正比关系,即算法的运行时间随着输入规模的增大而增长,但增长速度较慢。
例如,二分查找算法就是对数时间复杂度的算法。
另外还有平方时间复杂度O(n^2)、立方时间复杂度O(n^3)等,它们分别表示算法的运行时间与输入规模的平方、立方成正比关系。
这些时间复杂度通常出现在嵌套循环的算法中。
在实际分析算法时间复杂度时,我们通常采用以下几种方法:1. 直接计算法,根据算法中的基本操作数量,直接计算出算法的时间复杂度。
2. 递归法,对递归算法进行递归树分析,得出算法的时间复杂度。
3. 主定理法,主定理是分析递归算法时间复杂度的重要工具,能够快速得出递归算法的时间复杂度。
4. 循环展开法,对循环结构进行展开,得出算法的时间复杂度。
5. 估算法,通过估算算法中基本操作的执行次数,得出算法的时间复杂度的上界或下界。
数据结构练习题(含答案)(DOC)

数据结构练习题习题1 绪论单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成。
)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①,算法分析的两个主要方面是②。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法!② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。
2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。
5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
数据结构考试题1

要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号.每张答题纸都要写上姓名和学号.一、单项选择题(每小题1。
5分,共计30分)1。
数据结构是指。
A。
一种数据类型B. 数据的存储结构C. 一组性质相同的数据元素的集合D. 相互之间存在一种或多种特定关系的数据元素的集合2. 以下算法的时间复杂度为。
void fun(int n){ int i=1;while (i<=n)i++;}A. O(n)B. O(n)C. O(nlog2n)D。
O(log2n)3. 在一个长度为n的有序顺序表中删除元素值为x的元素时,在查找元素x时采用二分查找,此时的时间复杂度为。
A。
O(n) B. O(nlog2n)C。
O(n2) D. O(n)4. 在一个带头结点的循环单链表L中,删除元素值为x的结点,算法的时间复杂度为.A. O(n)B。
O(n)C. O(nlog2n)D。
O(n2)5。
若一个栈采用数组s[0。
.n-1]存放其元素,初始时栈顶指针为n,则以下元素x进栈的正确操作是。
A。
top++;s[top]=x; B.s[top]=x;top++;C.top-—;s[top]=x;B。
s[top]=x;top—-;6。
中缀表达式“2*(3+4)—1”的后缀表达式是,其中#表示一个数值的结束.A. 2#3#4#1#*+—B. 2#3#4#+*1#—C. 2#3#4#*+1#—D. —+*2#3#4#1#7。
设环形队列中数组的下标为0~N-1,其队头、队尾指针分别为front和rear(front 指向队列中队头元素的前一个位置,rear指向队尾元素的位置),则其元素个数为。
A。
rear-front B。
rear-front—1C. (rear—front)%N+1 D。
(rear—front+N)%N8。
若用一个大小为6的数组来实现环形队列,队头指针front指向队列中队头元素的前一个位置,队尾指针rear指向队尾元素的位置。
数据结构习题与答案

C、便于插入和删除D、便于利用零散的存储器空间
3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素算法的时间复杂度为C。
A、O(log2n) B、O(1)
C、O(n) D、O(n2)
4.(1)静态链表既有顺序存储的特点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关;
4、线性结构的特征:逻辑上满足有且仅有一个开始结点和一个终端结点,且其余结点有且仅有唯一的一个直接前趋和一个直接后继。
5.数据的存储结构被分为顺序、链接、索引和散列4种。
6.存储结构是逻辑结构的存储实现,其基本目标是建立数据的机内表示。
7.数据表示任务是逐步完成的,即数据表示形式的变化过程是:机外表示→
A、带尾指针的非循环链表B、带尾指针的循环链表
C、带头指针的非循环链表D、带头指针的循环链表
2、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是B。
A、1和5 B、2和4
C、4和2 D、5和1
3、设栈的输入序列为1、2、3、4,则C不可能是其出栈序列。
push (s,x); }
push (s,x); printf(x)
push(s,y); }
push(s,x);
push(s,'E');
push(s,x);
此题的输出结果是HELOLLL。
5、以下为单链表删除运算,分析算法,请在处填上正确的语句。
void delete_lkist(lklist head,int i)
D、q->next=p->next;q->prior=p;p->next=q;p->next=q;
(完整word版)数据结构考试题5

要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。
每张答题纸都要写上姓名和学号。
一、单项选择题(每小题2分,共20小题,共计40分)1.某算法的空间复杂度为0(1),则。
A.该算法执行不需要任何辅助空间B.该算法执行所需辅助空间大小与问题规模n无关C.该算法执行不需要任何空间D.该算法执行所需全部空间大小与问题规模n无关2.在长度为n的顺序表中插入一个元素,对应算法的时间复杂度为。
A.0(1)B.O(log2n)C.0(n)D.0(n2)3.设线性表中有n个元素,以下运算中,在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素B.在最后一个元素的后面插入一个新元素C.顺序输出前k个元素D.交换第i个元素和第n-i+1个元素的值(i=1, 2,…,n)4.以下数据结构中元素之间为非线性关系的是。
A.栈B.队列C.线性表D.以上都不是5.若一个栈用数组data[1..n]存储,初始栈顶指针top为n+1,则以下元素x进栈的正确操作是。
A.top++;data[top]=x;B.data[top]=x;top++;C.top-- ;data[top]=x;D.data[top]=x;top --;6.若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变。
A.frontB.rearC.front 和rearD.以上都不队7.设循环队列中数组的下标是0〜N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为。
A.r-fB.r-f-1C.(r-f)%N+1D.(r-f+N)%N8.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中的叶子结点个数是。
A.5B.6C.7D.89. 一棵哈夫曼树中共有199个结点,它用于多少个字符的编码。
A.99B.100C.101D.19910.设森林F中有4棵树,第1、2、3、4棵树的结点个数分别为a、b、c、d,将森林F转换为一颗二叉树B,则二叉树B根结点的左子树上的结点个数是。
算法时间复杂度的计算

算法时间复杂度的计算算法的时间复杂度是指算法执行所需要的时间与问题规模的关系。
它是衡量算法效率的重要指标。
在计算时间复杂度时,通常需要考虑以下几个方面:最坏情况时间复杂度、平均情况时间复杂度和最好情况时间复杂度。
最坏情况时间复杂度是指算法在最坏情况下所需的时间。
对于循环结构的算法来说,最坏情况一般是指循环体中的语句执行的最多次数。
最坏情况时间复杂度也是最常用的时间复杂度表示方法。
例如,对于一个数组进行线性查找的算法,最坏情况即要查找的元素在数组的最后一个位置,此时需要遍历整个数组,时间复杂度为O(n),其中n为数组的长度。
平均情况时间复杂度是指算法在所有可能输入情况下的时间复杂度的期望值。
在计算平均情况时间复杂度时,需要对算法在各种输入情况下所需时间的概率分布进行加权平均。
例如,对于一种排序算法来说,平均情况时间复杂度是指对于任意输入序列,排序所需的时间复杂度的期望值。
最好情况时间复杂度是指算法在最好情况下所需的时间。
对于循环结构的算法来说,最好情况一般是指循环体中的语句执行的最少次数。
特别地,对于大O标记法来说,我们通常只关注最高阶项,忽略常数项和低阶项。
这是因为当问题规模足够大时,常数项和低阶项对整体时间复杂度的影响非常小,可以忽略不计。
在计算算法的时间复杂度时,常见的时间复杂度有以下几种:1.常数时间复杂度(O(1)):无论输入规模的大小,算法的运行时间都保持不变的复杂度。
例如,对一个已知数组的其中一个元素进行访问,只需要一次访问,不受数组长度的影响。
2. 对数时间复杂度(O(log n)):算法的运行时间与问题规模的对数呈线性关系。
例如,二分查找算法就属于对数时间复杂度。
3.线性时间复杂度(O(n)):算法的运行时间与问题规模呈线性关系。
例如,线性查找算法就属于线性时间复杂度。
4. 线性对数时间复杂度(O(n log n)):算法的运行时间与问题规模的对数和问题规模呈线性关系。
例如,快速排序和归并排序就属于线性对数时间复杂度。
李春葆《数据结构教程》(第4版)课后习题-第一章至第十二章(圣才出品)

第二部分课后习题第1章绪论1.简述数据与数据元素的关系与区别。
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。
数据元素是数据的基本单位,是数据的个体。
数据与元素之间的关系是元素与集合之间的关系。
2.数据结构和数据类型有什么区别?答:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
而数据类型是一个值的集合和定义在这个集合上的一组运算的总称,如C语言中的int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符组成。
3.设3个表示算法频度的函数f、g和h分别为:f(n)=100n3+n2+1000g(n)=25n3+5000n2h(n)=n1.5+5000nlog2n求它们对应的时间复杂度。
答:f(n)=100n3+n2+1000=O(n3),g(n)=25n3+5000n2=O(n3),当n→∞时,√n>log2n,所以h(n)=n1.5+5000nlog2n=O(n1.5)。
4.用C/C++语言描述下列算法,并给出算法的时间复杂度。
(1)求一个n阶方阵的所有元素之和。
(2)对于输入的任意三个整数,将它们按从小到大的顺序输出。
(3)对于输入的任意n个整数,输出其中的最大和最小元素。
答:(1)算法如下:本算法的时间复杂度为O(n2)。
(2)算法如下:本算法的时间复杂度为O(1)。
(3)算法如下:本算法的时间复杂度为O(n)。
5.设n为正整数,给出下列各种算法关于n的时间复杂度。
(1)(2)(3)答:(1)设while循环语句执行次数为T(n),则:(2)算法中的基本运算语句是if(b[k]>b[j])k=j,其执行次数T(n)为:(3)设while循环语句执行次数为T(n),则:则6.有以下递归算法用于对数组a[i..j]的元素进行归并排序:求mergesort(a,0,n-1)的时间复杂度。
算法时间复杂度怎么算

算法时间复杂度怎么算一、概念时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)比如:一般总运算次数表达式类似于这样:a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+fa !=0时,时间复杂度就是O(2^n);a=0,b<>0 =>O(n^3);a,b=0,c<>0 =>O(n^2)依此类推eg:(1) for(i=1;i<=n;i++) //循环了n*n次,当然是O(n^2)for(j=1;j<=n;j++)s++;(2) for(i=1;i<=n;i++)//循环了(n+n-1+n-2+...+1)≈(n^2)/2,因为时间复杂度是不考虑系数的,所以也是O(n^2)for(j=i;j<=n;j++)s++;(3) for(i=1;i<=n;i++)//循环了(1+2+3+...+n)≈(n^2)/2,当然也是O(n^2) for(j=1;j<=i;j++)s++;(4) i=1;k=0;while(i<=n-1){k+=10*i; i++; }//循环了n-1≈n次,所以是O(n)(5) for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)x=x+1;//循环了(1^2+2^2+3^2+...+n^2)=n(n+1)(2n+1)/6(这个公式要记住哦)≈(n^3)/3,不考虑系数,自然是O(n^3)另外,在时间复杂度中,log(2,n)(以2为底)与lg(n)(以10为底)是等价的,因为对数换底公式:log(a,b)=log(c,b)/log(c,a)所以,log(2,n)=log(2,10)*lg(n),忽略掉系数,二者当然是等价的二、计算方法1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论1、填空题1.常见的数据结构有_________结构,_________结构,_________结构等三种。
2.常见的存储结构有_________结构,_________结构等两种。
3.数据的基本单位是_________,它在计算机中是作为一个整体来处理的。
4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,_________和_________。
2、应用题1、给出以下算法的时间复杂度.void fun(int n){int i=1,k=100;while(i<n){k=k+1;i=i+2;}}时间复杂度为_______________。
2、给出以下算法的时间复杂度.void fun2(int n){int i=1,k=100;while(i<n){i=i*10;k=k+1;}}时间复杂度为_______________。
第2章线性表1、填空题1. 线性表按照存储结构不同主要有两种实现方式,一种是_______________表,另一种是_______________表。
2.顺序表采用_______________访问机制对数据元素进行访问。
3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为:①_____________________________;②_____________________________;4.在单向链表中,若要删除某个结点p,必须要找到_______________结点,才能实现该操作。
2、选择题1.将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是。
(A)n (B)2n-1 (C)2n (D)n-12.在单链表中,如果在结点p之后插入一个新结点s,其操作为。
(A)s->next=p->next; p->next=s;(B)p->next=s; s->next=p->next;(C)s->next=p; p->next=s->next;(D)p->next=s; s->next=p;3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为( )。
(1≤i≤n)A.O(0) B.O(1) C.O(n) D.O(n2)4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为( )。
(1≤i≤n+1)A.n-i B.n-i+1 C. i D.n-i-13、判断题1.线性表中每一个元素都有一个前驱和一个后继。
()4、程序设计题1、单链表的结点结构定义如下:struct LinkNode{LinkNode *next;int data;};请根据述函数的功能写程序。
(10分)void Insert(LinkNode *h,LinkNode *s){//h指向链表的头结点(即使链表中没有元素,头结点也存在。
)//链表中元素已经递增有序//函数功能为将结点s插入到链表h中。
插入后链表仍然保持递增的顺序}2、设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L 仍是一个有序表。
顺序表的结构定义如下:#define ListSize 100 // 假定表空间大小为100struct SqList {int elem[ListSize]; // 数组elem用于存放表中的数据int length; // 当前的表长度};//以上为顺序表的结构//函数头定义如下void InsertIncreaseList( SqList &L ,int x ){}///////3、单链表中结点的结构如下所示:typedef struct node{ int data;struct node *next;}node;请设计满足下述功能的函数。
要求:建立带头结点的单链表H,要求函数从屏幕上读入m个整数,每读入一个,便生成相应的结点,并且把它插入到链表H的尾部。
函数形式为void CreateLinkList(node *H)。
(10分)第3章栈和队列1、填空题1.栈和队列在本质上都是_____________。
2.栈的操作特点是_____________。
队列的操作特点是_____________。
3.栈和队列是一种特殊的_____________,栈的特点是_____________;队列的特点是_____________。
2、选择题1.消除递归不一定需要使用栈,此说法_______。
A. 正确B. 错误2.对于栈,输入序列为(1,2,3,4),不可能得到的输出序列有_______。
(A)(1,2,3,4)(B)(4,3,2,1)(C)(1,3,4,2)(D)(3,1,2,4)3.用单循环链表表示队列,正确的说法是。
(A)可设一个头指针使入队、出队都方便;(B)可设一个尾指针使入队、出队都方便;(C)必须设头尾指针才能使入队、出队都方便;(D)无论如何,只可能使入队方便。
3、判断题1.栈的特点是先进先出。
()2.可以在队列的任意位置插入元素。
()3.递归程序化非递归程序必须用到栈。
()4.如果进栈的序列为(1,2,3,4),则(4,2,3,1)不可能是出栈序列。
()5.在用顺序表表示的循环队列中,可用标志位来区分队空或队满的条件。
()第4章串1、选择题1. 设有两个串p和q,求q在p中首次出现的位置的运算称作()A.连接 B.模式匹配 C.求子串 D.求串长2、判断题1.空串和空格串是同一个概念,二者没有区别。
()第5章数组和广义表1、填空题1.二维数组在内存中存储可以有两种存储方式,一种是_________优先存储,一种是优先存储。
2.设广义表L=((),(),(()))。
则head(L)是;tail(L)是;L的长度是;L的深度是。
3.设广义表L=((),(),(())) 则head(L)是________;tail(L)是________。
2、选择题1.在C语言中,如果有数组定义 int A[8][9];假定每个整型数据占2字节,则数组元素A[4][4]的地址是()。
A. A+80B. A+76C.A+82D.以上都不对2.广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为( );Head(Tail(Head(Tail(Tail(A)))))A.(g) B.(d) C.c D.d3、判断题1.在C语言中,多维数组的存储采取的是行优先的方式。
()2.广义表在本质上也是线性表。
()3.可以用三元组存储法来压缩存储稀疏矩阵。
()4.已知广义表A=((a,b,c),(d,e,f)),从A中取出原子e的运算是head(tail(head(tail(A))))。
( )第6章树和二叉树1、填空题1.一棵62个叶结点的完全二叉树,最多有________________个结点。
2.若规定仅有根的二叉树的高度为1,那么高为h的完全二叉树最多有-________________个结点,最少有________________个结点。
3.设只包含有根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为________________,最小结点数为________________。
4.设仅包含根结点的二叉树的高度为1,则高度为k的二叉树的最大结点数为________________,最小结点数为________________。
2、选择题1.具有N个结点的完全二叉树的深度是________。
(A)⌊ log2N ⌋(B)⌊ log2N ⌋+1(C)⌊ log2(N) ⌋(D)⌊ log2N ⌋-12.设二叉树的树根为第一层,则第i层上至多有_______结点。
(A)1 (B)2 (C)2i-1 (D)2i-13、判断题1.二叉树的左右子树次序是严格的,不能够任意改变。
()2.深度为k的满二叉树的结点为2k-1 。
()3.二叉树的三叉链表存储结构可以方便的访问到双亲结点。
()4、应用题1.在一段文字中,共出现a、b、c、d、e、f六种字符,每种字符出现的频率分别为7,9,12,22,23,27。
请回答下列问题:(1)什么是哈夫曼树?(3分)(2)根据题目所给频率值,画出相应的哈夫曼树。
(11分)(3)给出各个字符对应的哈夫曼编码。
(6分)(4)该段文字经过哈夫曼编码后,长度是多少。
(4分)2. 设一棵二叉树的先序遍历序列为abcde,中序遍历序列为badce,请画出对应的二叉树,并写出对应后序遍历序列。
(15分)3.通信报文中出现的字符A、B、C、D、E,在报文中出现的频率分别为0.23、0.2、0.32、0.12、0.13,分别给出相应字符的哈夫曼编码(要求画出哈夫曼树,并且把权值小的结点放在左边)。
(共14分)4.某二叉树结点的中序序列为H,B,C,D,E,F,G,后序序列为B,D,C,H,F,G,E,请据此画出该二叉树,再给该树加上中序线索。
(共15分)5.请证明对于任何一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
(10分)6.请按照孩子-兄弟表示法,将图1所示树转化为二叉树。
(共14分)7.设二叉树如图2所示。
分别写出它的先序遍历、中序遍历、后序遍历序列。
(共15分)8.(1)写出如图所示二叉树的中序遍历结果。
(8分) (2)画出二叉树的中序后继线索。
(10分)9.已知某二叉树的前序遍历序列为:A B C D E F G 和中序遍历序列为:C B E D A F G 。
请画出该二叉树。
10.已知通信联络中只可能出现A 、B 、C 、D 、E 、F 、G 、H 共8种字符,其出现次数分别为5,28,7,9,14,23,3,11次。
(1)请画出赫夫曼树(权值小的结点在左边)。
(15分) (2)计算该树的带权路径长度。
(3分)图25、读程序写结果已知二叉树的结点结构如下:Array struct Node{int data;Node *lchild,*rchild;};某棵二叉树的形态如右图:根据要求解答下题:1、 (共5分)int fun1(Node *root){if(root==0) return 0;int l,r;l=fun1(root->lchild);r=fun1(root->rchild);if(l>=r) return l+1;else return r+1;}(1)当root是指向结点A的指针时,函数fun1的返回值是多少?(2分) (2)函数fun1的功能是什么?(3分)2、 (共6分)int fun2(Node *root){if(root==0) return 0;int l=fun2(root->lchild );int r=fun2(root->rchild );return l+r+1;}(1)当root是指向结点A的指针时,函数fun1的返回值是多少?(2分) (2)函数fun1的功能是什么?(4分)第7章图1、填空题1. 有n个顶点的有向连通图最多有条边,最少有条边。