树与森林习题(answer)
树成林数学大题

树成林数学大题
以下是一些数学大题,涉及到树和林的概念:
1.一片森林里有若干棵树,其中每棵树都与其他树相连。
我们知道整个森林中有90条边,
但不知道具体有多少棵树。
我们要找出森林中有多少棵树。
2.一片森林里有很多树,每棵树都与其他树相连。
现在我们要在这片森林里种一棵新的
树,这棵新树与现有的每棵树都相连,那么我们需要确保新树与多少棵现有的树相连才能实现这个目标?
3.一片森林里有若干棵树,每棵树都与其他树相连。
现在我们要在这片森林里种一棵新
的树,这棵新树与现有的每棵树都相连,并且新树的根部分支与现有树的根部分支数量相同。
我们需要确保新树的根部分支与多少个现有树的根部分支相连才能实现这个目标?
1。
森林测计学考试习题36页word

一、填空题(本大题共10小题,每小题 1 分,总计10 分)1. 树木重量测定的三要素为胸径、(树高)和形数。
2. 地位指数是根据(林分年龄)和林分优势木平均高而确定的。
3. 树高曲线是指(胸径)与树高的相关曲线。
4. 郁闭度是(树冠投影面积)与林地面积之比。
5. 人工林最小相对直径0.4〜0.5,最大相对直径(1.7 〜1.8 )。
6. 角规测树时,Fg 越大,测量误差(越小)。
7. 在木材生产和销售中,把经济材和(薪材)统称作商品材8. 林分生长与收获模型分为全林分模型、径级模型和(单木模型)。
9. Richards 生长方程(y A(1 exp( kt))c)。
10. 某解析木18.5 米,用2 米区分段区分,则梢头长度是第1 页(0.5 )米二、概念与名词解释(本大题共10小题,每小题2分,总计20分)1. 胸高形数:f" ,式中V——树干材积;g1.3——胸91.3H高断面积;H——全树高。
2. 冠长率:树冠长度与树高的比值。
3. 优势树种:在混交林中,蓄积量比重最大的树种。
4. 形高:形数与树高的乘积。
5. 直径分布:林分内林木株数按径阶的分布。
6. 林分调查因子:客观反映林分数量和质量的一些特征标志。
7. 一元材种出材率表:根据林木胸径一个因子与材种出材率之间关系所编制的数表&全林分模型:用以描述全林分总量(如断面积、蓄积量)及平均单株木生长过程的生长模型。
9.自由树:周围没有竞争木与其争夺生长空间、可以充分生长的林木。
10绝干重:树木干燥后去掉结晶水的重量。
三、简述题(本大题共5小题,每小题4分,总计20分)1. 绘图说明树木连年生长量和平均生长量之间的关系。
1.树木连年生长量和平均生长量之间的关系(2分):(1)平均生长量达到最大时与连年生长量相等,此时树木的年龄称为数量成熟龄t(Q),它是确定合理采伐年龄的依据。
(2)t<t(Q)时,连年生长量增加较快,连年生长量大于平均生长量。
森林生态学复习题参考答案(定稿)

森林生态学复习题参考答案一、名词解释1、耐荫性:指树种在林冠庇荫条件下能否正常生长发育并完成更新的能力。
2、生活型:植物长期适应不同环境条件而在外貌上反映出来的植物类型称为生活型。
3、生物量:生物有机体在某一段时间内单位面积上所积累的有机物的总量。
4、异株克生:指植物的根、芽、叶和花等排放出的生物化学物质对其它植物的生长和发育抑制和对抗作用或者某些有益的作用。
5、建群种:指在创造群落特有环境条件以及引起群落种类组成方面起主要作用的植物种。
6、建群种:群落中存在于主要层次中的优势种。
7、生态型:指同种植物的不同立体由于长期生长在不同的环境条件下所形成的在生理、生态和形态方面各异的类型形态。
8、环境:指某一特定生物体或生物群体以外的空间,以及直接或间接影响该生物体或生物群体生存的一切事物的总和。
9、生态系统:生物群落与非生物环境间通过物质循环、能量流动和信息传递所形成的群落与环境的综合体称为生态系统。
10、自然稀疏:指在一定密度的森林内,随着林龄增大和林木生长而出现的株数不断减少的现象。
11、竞争:指植物不同个体间为利用环境的能量和资源而发生的相互关系。
12、次生演替:从次生裸地上开始的植物群落演替称为次生演替。
13、物候:指植物生长期适应于一年中的寒暑节律性变化而形成与此相适应的发育节律。
14、生物圈:指生物生存着的岩石圈、土壤圈、大气圈、水圈的总称。
15、大气污染:指大气中人为排放的有害物质达到一定浓度,持续一定时间,破坏了大气中原来成分的物理、化学和生态平衡体系,并对人的健康、生物的生长、正常的工农业生产和交通运输发生危害的条件。
16、食物网:生态系统中生物之间通过取食和被食关系所形成的网状结构。
17、自然整枝:当林分密度较大时,随林木生长树冠下部枝条因光照不足而枯死的现象。
18、郁闭度:指树冠郁闭的程度,是树冠垂直投影面积与林地总面积之比。
19、有效积温:植物某一发育时期或全部生长期中有效温度的总和。
第6章 树与森林测试题

第六章树与森林一、选择题1、设二叉树有n个结点且根结点处于第1层,则其高度为()。
A、n-1B、log2(n+1)-1C、log2n +1D、不确定2、设高度为h(空二叉树的高度为0,只有一个结点的二叉树的高度为1)的二叉树只有度为2和度为0的结点,则该二叉树中所含结点至少有()个。
A、2hB、2h -1C、2h +1D、h +13、设森林F中有4棵树,第1、2、3、4棵树的结点个数分别为n1、n2、n3、n4,当把森林F转换成一棵二叉树后,其根结点的右子树中有()个结点。
A、n1-1B、n1+n2+n3C、n2+n3+n4D、n14、将含有82个结点的完全二叉树从根结点开始顺序编号,根结点为第1号,其他结点自上向下,同一层自左向右连续编号。
则第40号结点的双亲结点的编号为()。
供选择的答案:A、20B、19C、81D、805、对二叉树从1开始编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用()实现编号。
A、先序遍历B、中序遍历C、后序遍历D、从根开始进行层次遍历6、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A、空或只有一个结点B、高度等于其结点数C、任一结点无左孩子D、任一结点无右孩子7、在线索化二叉树中,t所指结点没有左子树的充要条件是()。
A、t-〉left==NULLB、t-〉ltag==1C、t-〉ltag==1且t-〉left==NULLD、.以上都不对8、二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法()。
A、正确B、错误9、二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法()。
A、正确B、错误10、设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为()。
A、2hB、2h-1C、2h+1D、h+111、如果T2是由有序树T转换而来的二叉树,那么T中结点的前序就是T2中结点的()。
森林营造技术习题及参考答案

森林营造技术习题及参考答案森林营造技术习题及参考答案一、选择题1、下列哪一种树种适合作为造林树种?() A. 落叶松 B. 苹果树C. 柏树D. 杨树答案:C 解析:柏树是一种适应性强、生长快、耐干旱、耐瘠薄的一种树种,适合作为造林树种。
2、以下哪一种方法是进行森林营造的常用方法?() A. 原生林改造 B. 次生林改造 C. 人工林营造 D. 混交林营造答案:C 解析:人工林营造是森林营造的常用方法,可以通过选择适宜的树种、确定造林密度和栽培方式等手段营造出高质量的森林。
3、下列哪一种因素对森林的生长和发育影响最大?() A. 气候 B. 土壤 C. 海拔 D. 光照答案:A 解析:气候是影响森林生长和发育最重要的因素,包括温度、降雨量、光照等,这些因素决定了森林的类型和分布。
二、简答题4、简述森林营造的技术流程。
答案:森林营造的技术流程包括以下步骤:首先,确定造林地点和树种;其次,进行整地、设置栽培床和栽培穴;然后,选择合适的栽培季节进行播种或植苗;最后,进行抚育管理和维护。
41、简述森林营造的优点和缺点。
答案:森林营造的优点包括提供木材资源、改善生态环境、增加生物多样性等。
缺点包括投资大、栽培周期长、对技术要求高等。
411、简述不同类型森林的营造技术要点。
答案:不同类型的森林营造技术要点不同。
对于针叶林,应选择适应性强、耐旱、耐寒的树种,如松、柏等,采用较大的栽培密度,以获得较高的木材产量。
对于阔叶林,应选择适应性强、耐瘠薄、生长快、观赏价值高的树种,如杨、柳等,适当调整栽培密度,以促进林木生长和木材质量提高。
对于混交林,应选择多种适宜的树种进行混交,以获得良好的生态效益和经济效益。
同时,应根据树种的生物学特性确定栽培方式和配置方式,以达到最佳的造林效果。
三、论述题7、论述如何通过科学规划和管理实现森林资源的可持续利用。
答案:为实现森林资源的可持续利用,科学规划和管理是关键。
首先,应根据当地的气候、土壤等自然条件选择适宜的树种,并确定合理的造林密度和栽培方式。
第六章-树和森林习题

习题6.6上图习题6.8:void Get_PreOrder(BiTree T,int k,TElemType &e){ //求先序序列中第k个位置上结点的值if(T){ c++; //每访问一个子树的根都会使前序序号计数器加1,c设为全局量if(c==k){ e=T->data; return;}else{ Get_PreOrder(T->lchild, k, e ); //在左子树中查找Get_PreOrder(T->rchild, k ,e); //在右子树中查找}}//if} //Get_PreOrder习题6.9:int LeafCount(BiTree T)//求二叉树中叶子结点的数目{if(!T) return 0; //空树没有叶子else if(!T->lchild&&!T->rchild)return 1; //叶子结点else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);//左子树的叶子数加上右子树的叶子数} //LeafCount习题6.10: //交换所有结点的左右子树void Change_BiTree (BiTree T){ BiTree tempif(T){ temp=T->lchild;T->lchild=T->rchild;T->rchild=temp} //交换左右子树if(T->lchild) Change_BiTree(T->lchild);if(T->rchild) Change_BiTree (T->rchild);//左右子树再分别交换各自的左右子树}//Change_BiTree习题6.11: //求二叉树中以值为x的结点为根的子树深度int Get_Sub_Depth(BiTree T,int x, int &depth){ if(T->data==x){ depth=Get_Depth(T); return;}//找到了值为x的结点,求其深度 else{ if(T->lchild) Get_Sub_Depth(T->lchild,x,depth);if(T->rchild) Get_Sub_Depth(T->rchild,x,depth);} //在左右子树中继续寻找} //Get_Sub_Depthint Get_Depth(BiTree T) //求子树深度的递归算法{ if(!T) return 0;else{ m=Get_Depth(T->lchild);n=Get_Depth(T->rchild);return (m>n?m:n)+1;}}//get depth习题6.12: // 删除所有以元素x为根的子树void Del_Sub_x(BiTree T,int x){ if(T->data==x) Del_Sub(T); //删除该子树else{ if(T->lchild) Del_Sub_x(T->lchild,x);if(T->rchild) Del_Sub_x(T->rchild,x);} //else 在左右子树中继续查找} //Del_Sub_xvoid Del_Sub(BiTree T) //删除子树T{ if(T->lchild) Del_Sub(T->lchild);if(T->rchild) Del_Sub(T->rchild);free(T);} //Del_Sub习题6.13: // 根据顺序存储结构建立二叉链表Status CreateBiTree_SqList(BiTree &T, SqList sa){ BiTree ptr[st+1]; //该数组储存与sa中各结点对应的树指针 if(!st){ T=NULL; return; } //空树ptr[1]=new BTNode;ptr[1]->data=sa.elem[1]; //建立树根T=ptr[1];T->lchild=NULL; T->rchild=NULL;for(i=2; i<=st; i++){ ptr[i]=new BTNode;ptr[i]->data=sa.elem[i];j=i/2; //找到结点i的双亲jif(i-j*2) ptr[j]->rchild=ptr[i]; //i是j的右孩子else ptr[j]->lchild=ptr[i]; //i是j的左孩子}return OK;} //CreateBitree_SqList习题6.19: //求一棵以孩子兄弟链表表示的树的度int GetDegree_CSTree(CSTree T)//求孩子兄弟链表表示的树T的度{ if(!T->firstchild) return 0; //空树else{ degree=0;for( p=T->firstchild; p; p=p->nextsibling)degree++; //本结点的度for( p=T->firstchild; p; p=p->nextsibling){ d=GetDegree_CSTree(p);if(d>degree) degree=d; //孩子结点的度的最大值}return degree;}//else} //GetDegree_CSTree习题6.20: //求孩子兄弟链表表示的树T的叶子数目int LeafCount_CSTree(CSTree T ){ if(!T) return 0;else if(!T->firstchild) return 1; //叶子结点else{ count=0;for(p=T->firstchild;p;p=child->nextsibling)count+=LeafCount_CSTree(p);return count; //各子树的叶子数之和}} //LeafCount_CSTree习题6.20: //求孩子兄弟链表表示的树T的叶子数目int LeafCount(CSTree T ){ CSTree p=T;int k=0;if(p!=NULL){ if(p->firstchild==NULL)k=1+LeafCount(p->firstchild)+LeafCount (p->nextsibling);elsek=0+LeafCount(p->firstchild)+LeafCount(p->nextsibling);}else k=0;return k;} //LeafCount习题6.23: //按树状打印输出二叉树的元素,i表示结点所在层次,初次调用时i=0 void Print_BiTree(BiTree T,int i){ if(T->rchild) Print_BiTree(T->rchild , i+1);for(j=1;j<=i; j++ )printf (“ ”); //打印i个空格以表示出层次cout<<T->data<<endl; //打印T元素,换行if(T->lchild) Print_BiTree(T->rchild, i+1 );} //Print_BiTree分析:该递归算法实际上是带层次信息的中序遍历,只不过按照题目要求,顺序为先右后左.补充习题:1.树最适合用来表示()。
数据结构习题及答案与实验指导(树和森林)7

第7章树和森林树形结构是一类重要的非线性结构。
树形结构的特点是结点之间具有层次关系。
本章介绍树的定义、存储结构、树的遍历方法、树和森林与二叉树之间的转换以及树的应用等内容。
重点提示:●树的存储结构●树的遍历●树和森林与二叉树之间的转换7-1 重点难点指导7-1-1 相关术语1.树的定义:树是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:①有且仅有一个特定的称为根的结点;②其余的结点可分为m(m>=0)个互不相交的子集T1,T2,…,T m,其中每个子集本身又是一棵树,并称为根的子树。
要点:树是一种递归的数据结构。
2.结点的度:一个结点拥有的子树数称为该结点的度。
3.树的度:一棵树的度指该树中结点的最大度数。
如图7-1所示的树为3度树。
4.分支结点:度大于0的结点为分支结点或非终端结点。
如结点a、b、c、d。
5.叶子结点:度为0的结点为叶子结点或终端结点。
如e、f、g、h、i。
6.结点的层数:树是一种层次结构,根结点为第一层,根结点的孩子结点为第二层,…依次类推,可得到每一结点的层次。
7.兄弟结点:具有同一父亲的结点为兄弟结点。
如b、c、d;e、f;h、i。
8.树的深度:树中结点的最大层数称为树的深度或高度。
9.有序树:若将树中每个结点的子树看成从左到右有次序的(即不能互换),则称该树为有序树,否则称为无序树。
10.森林:是m棵互不相交的树的集合。
7-1-2 树的存储结构1.双亲链表表示法以图7-1所示的树为例。
(1)存储思想:因为树中每个元素的双亲是惟一的,因此对每个元素,将其值和一个指向双亲的指针parent构成一个元素的结点,再将这些结点存储在向量中。
(2)存储示意图:-1 data:parent:(3)注意: Parrent域存储其双亲结点的存储下标,而不是存放结点值。
下面的存储是不正确的:-1 data:parent:2.孩子链表表示法(1)存储思想:将每个数据元素的孩子拉成一个链表,链表的头指针与该元素的值存储为一个结点,树中各结点顺序存储起来,一般根结点的存储号为0。
森林测试题及答案

森林测试题及答案一、选择题(每题2分,共20分)1. 森林中最常见的树木类型是:A. 松树B. 桦树C. 橡树D. 棕榈树答案:A2. 森林生态系统中,扮演分解者角色的是:A. 植物B. 动物C. 细菌和真菌D. 人类答案:C3. 森林覆盖率最高的大洲是:A. 亚洲B. 南美洲C. 非洲D. 欧洲答案:B4. 森林火灾的主要原因是:A. 闪电B. 人为原因C. 气候变化D. 所有以上答案:D5. 森林中,树木通过什么方式进行繁殖?A. 种子繁殖B. 根茎繁殖C. 孢子繁殖D. 人工嫁接答案:A6. 森林中,哪种动物是顶级捕食者?A. 狼B. 鹿C. 蛇D. 昆虫答案:A7. 森林砍伐对环境的主要影响是:A. 增加氧气B. 减少二氧化碳C. 土壤侵蚀D. 增加生物多样性答案:C8. 森林中,哪种植物可以进行光合作用?A. 苔藓B. 地衣C. 蘑菇D. 蕨类植物答案:D9. 森林中,哪种动物是重要的传粉者?A. 蜜蜂B. 蝴蝶C. 蚂蚁D. 蜘蛛答案:A10. 森林保护的主要目的是:A. 提供木材B. 保护生物多样性C. 增加就业机会D. 提高旅游收入答案:B二、填空题(每题2分,共20分)1. 森林是地球上最重要的生态系统之一,它提供了_________、_________和_________等生态服务。
答案:氧气、碳储存、生物多样性2. 森林中的土壤通常富含_________,这对于植物生长至关重要。
答案:有机质3. 森林砍伐会导致_________减少,进而影响全球气候。
答案:碳储存4. 森林中的_________层是森林生态系统中最活跃的部分。
答案:林冠5. 森林火灾可以由_________引起,也可以由_________引起。
答案:自然原因、人为原因6. 森林中的_________是重要的水源涵养区。
答案:湿地7. 森林中的_________是重要的生物多样性保护区域。
答案:自然保护区8. 森林中的_________是重要的生态旅游目的地。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 树与森林
6-5 在结点个数为n (n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点? 6-6 试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
6-7 如果一棵树有n 1个度为1的结点, 有n 2个度为2的结点, … , n m 个度为m 的结点, 试问有多少个度为0的结点? 试推导之。
6-9 若用二叉链表作为二叉树的存储表示,试针对以下问题编写递归算法: (1) 统计二叉树中叶结点的个数。
(2) 以二叉树为参数,交换每个结点的左子女和右子女。
6-10 一棵高度为h 的满k 叉树有如下性质: 第h 层上的结点都是叶结点, 其余各层上每个结点都有k 棵非空子树, 如果按层次自顶向下, 同一层自左向右, 顺序从1开始对全部结点进行编号, 试问: (1) 各层的结点个数是多少?
(2) 编号为i 的结点的父结点(若存在)的编号是多少?
(3) 编号为i 的结点的第m 个孩子结点(若存在)的编号是多少?
(4) 编号为i 的结点有右兄弟的条件是什么? 其右兄弟结点的编号是多少?
(5) 若结点个数为 n, 则高度h 是n 的什么函数关系?
6-16 请画出右图所示的树所对应的二叉树。
【解答】
6-17 在森林的二叉树表示中,用llink 存储指向结点第一个子女的指针,用rlink 存储指向结点下一个兄弟的指针,用data 存储结点的值。
如果我们采用静态二叉链表作为森林的存储表示,同时按森林的先根次序依次安放森林的所有结点,则可以在它们的结点中用只有一个二进位的标志ltag 代替llink ,用rtag 代替rlink 。
并设定若ltag = 0,则该结点没有子女,若ltag ≠ 0
,则该结点有子女;若rtag = 0,则该结点没有下一个兄弟,若rtag ≠ 0,则该结点有下一个兄弟。
试给出这种表示的结构定义,并设计一个算法,将用这种表示存储的森林转换成用llink
-
rlink 表示的森林。
【解答】
对应二叉树
对应二叉树
llink data
rlink
0 1 2 3 4 5 6 7 8 9 10 森林的左子女-右兄弟
表示的静态二叉链表
0 1 2 3 4 5 6 7 8 9 10
6-18二叉树的双序遍历(Double -order traversal)是指:对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树。
试写出执行这种双序遍历的算法。
6-19 已知一棵二叉树的前序遍历的结果是ABECDFGHIJ, 中序遍历的结果是EBCDAFHIGJ, 试画出这棵二叉树。
6-20 已知一棵树的先根次序遍历的结果与其对应二叉树表示(长子-兄弟表示)的前序遍历结果相同, 树的后根次序遍历结果与其对应二叉树表示的中序遍历结果相同。
试问利用树的先根次序遍历结果和后根次序遍历结果能否唯一确定一棵树? 举例说明。
【解答】
因为给出二叉树的前序遍历序列和中序遍历序列能够唯一地确定这棵二叉树,因此,根据题目给出的条件,利用树的先根次序遍历结果和后根次序遍历结果能够唯一地确定一棵树。
例如,对于题6-16所示的树
6-21 给定权值集合{15, 03, 14, 02, 06, 09, 16, 17}, 构造相应的霍夫曼树, 并计算它的带权外部路径长度。
6-22 假定用于通信的电文仅由8个字母c1, c2, c3, c4, c5, c6, c7, c8组成, 各字母在电文中出现的频率分别为5, 25, 3, 6, 10, 11, 36, 4。
试为这8个字母设计不等长Huffman 编码, 并给出该电文的总码数。
6-23 给定一组权值: 23, 15, 66, 07, 11, 45, 33, 52, 39, 26, 58, 试构造一棵具有最小带权外部路径长度的扩充4叉树, 要求该4叉树中所有内部结点的度都是4, 所有外部结点的度都是0。
这棵扩充4叉树的带权外部路径长度是多少?
【解答】权值个数n = 11,扩充4 叉树的内结点的度都为4,而外结点的度都为0。
设内结点个数为n 4,外结点个数为n 0,则可证明有关系n 0 = 3 * n 4 + 1。
由于在本题中n 0 = 11≠3 * n 4 +1,需要补2个权值为0的外结点。
此时内结点个数n 4 = 4。
仿照霍夫曼树的构造方法来构造扩充4叉树,每次合并4个结点。
ltag data rtag
森林的双标记表示
对应二叉树的前序序列为1, 2, 3, 4, 5, 6, 8, 7;中序序列为3, 4, 8, 6, 7, 5, 2, 1。
原树的先根遍历序列为 1, 2, 3, 4, 5, 6, 8, 7;后根遍历序列为3, 4, 8, 6, 7, 5, 2, 1。
此树的带权路径长度WPL = 375 + 82 + 169 + 18 = 644。
6-5结点个数为n 时,高度最小的树的高度为1,有2层;它有n -1个叶结点,1个分支结点;高度
最大的树的高度为n -1,有n 层;它有1个叶结点,n -1个分支结点。
6-6【解答】 具有3个结点的树 具有3个结点的二叉树
6-7总结点数 n = n 0 + n 1 + n 2 + … + n m 总分支数 e = n -1 = n 0 + n 1 + n 2 + … + n m -1
= m*n m + (m -1)*n m -1 + … + 2*n 2 + n 1
则有 1)1(20+⎪⎭
⎫ ⎝⎛-=∑=m i i n i n
6-9【解答】
(1) 统计二叉树中叶结点个数
int BinaryTree <Type> :: leaf ( BinTreeNode <Type> * ptr ) { if ( ptr == NULL ) return 0;
else if ( ptr ->leftChild == NULL && ptr ->rightChild == NULL ) return 1; else return leaf ( ptr ->leftChild ) + leaf ( ptr ->rightChild );
}
(2) 交换每个结点的左子女和右子女
void BinaryTree <Type> :: exchange ( BinTreeNode <Type> * ptr ) { BinTreeNode <Type> * temp ;
if ( ptr ->leftChild != NULL || ptr ->rightChild != NULL ) {
temp = ptr ->leftChild ;
ptr ->leftChild = ptr ->rightChild ;
ptr ->rightChild = temp ; exchange ( ptr ->leftChild ); exchange ( ptr ->rightChild );
} }
6-10【解答】 (1) k i ( i = 0, 1, ……, h ) (2) ⎥⎦⎥⎢⎣⎢-+k 2k i
(3) ( i -1)*k + m + 1
(4) ( i -1 ) % k ≠ 0 或 k *k 2k i i ⎥⎦
⎥⎢⎣⎢-+≤ 时有右兄弟,右兄弟为i + 1。
(5) h = log k (n*(k -1)+1)-1 (n = 0时h = -
1 )
6-18【解答】
template <class Type>
void BinaryTree<Type > :: Double_order ( BinTreeNode<Type > *current ){ if ( current != NULL ) { cout << current ->data << ' '; Double_order ( current ->leftChild ); cout << current ->data << ' '; Double_order ( current ->rightChild );
} }
【解答】
6-19当前序序列为ABECDFGHIJ ,中序序列为EBCDAFHIGJ 时,逐步形成二叉树的过程如下图所示:
6-22【解答】已知字母集 {
c1, c2, c3, c4, c5, c6, c7, c8 },频率 {5, 25, 3, 6, 10, 11, 36, 4 },则Huffman 编码为
电文总码数为 4 * 5 + 2 * 25 + 4 * 3 + 4 * 6 + 3 * 10 + 3 * 11 + 2 * 36 + 4 * 4 = 257
C4。