数据结构教程李春葆课后答案第7章树和二叉树

合集下载

数据结构(李春葆)习题与解析

数据结构(李春葆)习题与解析

数据结构(李春葆)习题与解析一、绪论选择题1.数据结构是一门研究非数值计算的程序设计问题计算机的以及它们之间的和运算等的学科。

1A.数据元素B.计算方法C.逻辑存储D.数据映像2A.结构B.关系C.运算D.算法2.数据结构被形式地定义为(K,R),其中K是的有限集,R是K上的有限集。

1A.算法B.数据元素C.数据操作D.逻辑结构2A.操作B.映像C.存储D.关系3.在数据结构中,从逻辑上可以把数据结构分成。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4.线性结构的顺序存储结构是一种的存储结构,线性表的链式存储结构是一种的存储结构。

A.随机存取B.顺序存取C.索引存取D.散列存取5.算法分析的目的是,算法分析的两个主要方面是。

1A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2A.空间复杂度和时间复杂度B.正确性和简单性C.可读性和文档性D.数据复杂性和程序复杂性6.计算机算法指的是,它必须具备输入、输出和等5个特性。

1A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法2A.可执行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。

A.正确B.不正确8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。

A.必须连续的B.部分地址必须连续的C.一定是不续的D连续不连续都可以9.以下的叙述中,正确的是。

A.线性表的存储结构优于链式存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。

A.正确B.不正确填空题1.数据逻辑结构包括三种类型、和,树形结构和图形结构合称为。

数据结构树和二叉树习题及答案

数据结构树和二叉树习题及答案

习题六树和二叉树一、单项选择题1.以下说法错误的是()A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种”分支层次”结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是()A.任何一棵二叉树中至少有一个结点的度为 2B.任何一棵二叉树中每个结点的度都为 2C.任何一棵二叉树中的度肯定等于 2D.任何一棵二叉树中的度可以小于 23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示()A.有序数据元素 B .无序数据元素C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C .15 D .不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F对应的二叉树根结点的右子树上的结点个数是()。

A.M1 B .M1+M2 C .M3 D .M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A.250 B .500 C .254 D .505 E .以上答案都不对8.设给定权值总数有n 个,其哈夫曼树的结点总数为()A.不确定 B . 2n C . 2n+1 D . 2n-19.二叉树的第I层上最多含有结点数为()I I-1 I-1 IA.2I B .2I-1-1 C .2I-1D .2I-110.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+111.利用二叉链表存储树,则根结点的右指针是()。

第7章树和二叉树(5)-数据结构教程(Java语言描述)-李春葆-清华大学出版社

第7章树和二叉树(5)-数据结构教程(Java语言描述)-李春葆-清华大学出版社

A
B
C
先序线索二叉树
DE
F
二叉树
A
B
C
DE F
先序序列:ABDCEF
2/38
在原二叉链中增加了ltag和rtag两个标志域。
ltag=
0 表示lchild指向结点的左孩子 1 表示lchild指向结点的前驱结点即为线索
rtag=
0 表示rchild指向结点的左孩子 1 表示rchild指向结点的后继结点即为线索
pre=root;
Thread(b);
pre.rchild=root; pre.rtag=1; root.rchild=pre; } }
//建立以root为头结点的中序线索二叉树 //创建头结点root //头结点域置初值 //b为空树时
//b不为空树时
//pre是p的前驱结点,用于线索化 //中序遍历线索化二叉树 //最后处理,加入指向根结点的线索
ltag=rtag=0; }
public ThNode(char d) { data=d;
lchild=rchild=null; ltag=rtag=0; } }
//线索二叉树结点类型 //存放结点值 //左、右孩子或线索的指针 //左、右标志 //默认构造方法
//重载构造方法
5/38
中序线索化二叉树类ThreadClass
public class ThreadClass
{ ThNode b;
//二叉树的根结点
ThNode root;
//线索二叉树的头结点
ThNode pre;
//用于中序线索化,指向中序前驱结点
String bstr;
public ThreadClass()

部分习题参考答案(数据结构 李春葆)PPT课件

部分习题参考答案(数据结构 李春葆)PPT课件

//对应的队列为空队时
{
QH[x]=s;
QT[x]=s;
}
else
{
QT[x]->next=s; //将*s节点链到QT[x]所指节点之后
QT[x]=s;
//让QT[x]仍指向尾节点
}
}
16
void Create(QNode *QH[],QNode *QT[]) //根据用户输入创建队列
{
int n,x,i;
L->data[j+1]=L->data[j]; L->data[i]=x; L->length++; }
1
2.3 设计一个算法,将一个带头结点的数据域依次为a1,a2,…, an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变 为an,…,最后一个结点的数据域为a1。
void Reverse(LinkList *&L) { LinkList *p=L->next,*q;
}
printf("\n");
}
18
void main()
{
int i;
QNode *QH[MAXQNode],*QT[MAXQNode];
//各队列的队头QH和队尾指针QT
for (i=0;i<MAXQNode;i++)
QH[i]=QT[i]=NULL;
解:(1)A、D均合法,而B、C不合法。因为在B中,先 进栈一次,立即出栈三次,这会造成栈下溢。在C中共进 栈五次,出栈三次,栈的终态不为空。
10
(2)本题使用一个链栈来判断操作序列是否合法,其中A为存
放操作序列的字符数组,n为该数组的元素个数(这里的

第7章树和二叉树(2)-数据结构教程(Java语言描述)-李春葆-清华大学出版社

第7章树和二叉树(2)-数据结构教程(Java语言描述)-李春葆-清华大学出版社
1. 二叉树的定义
二叉树也称为二分树,它是有限的结点集合,这个集合或者是空,或者由 一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。 二叉树中许多概念与树中的概念相同。 在含n个结点的二叉树中,所有结点的度小于等于2,通常用n0表示叶子结 点个数,n1表示单分支结点个数,n2表示双分支结与度为2的树是不同的。
度为2的树至少有3个结点,而二叉树的结点数可以为0。 度为2的树不区分子树的次序,而二叉树中的每个结点最多有 两个孩子结点,且必须要区分左右子树,即使在结点只有一棵 子树的情况下也要明确指出该子树是左子树还是右子树。
2/35
归纳起来,二叉树的5种形态:
Ø
4/35
3. 满二叉树和完全二叉树
在一棵二叉树中,如果所有分支结点都有左孩子结点和右孩子结点,并且 叶子结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。
可以对满二叉树的结点进行层序编号,约定编号从树根为1开始,按照层 数从小到大、同一层从左到右的次序进行。
满二叉树也可以从结点个数和树高度之间的关系来定义,即一棵高度为h 且有2h-1个结点的二叉树称为满二叉树。
R={r} r={<ai,aj> | ai,aj∈D, 1≤i,j≤n,当n=0时,称为空二叉树;否则其中
有一个根结点,其他结点构成根结点的互不相交的左、右子树,该 左、右两棵子树也是二叉树 } 基本运算: void CreateBTree(string str):根据二叉树的括号表示串建立其存储结构。 String toString():返回由二叉树树转换的括号表示串。 BTNode FindNode(x):在二叉树中查找值为x的结点。 int Height():求二叉树的高度。 … }
5
E

数据结构第七章参考答案

数据结构第七章参考答案

习题71.填空题(1)由10000个结点构成的二叉排序树,在等概率查找的条件下,查找成功时的平均查找长度的最大值可能达到(___________)。

答案:5000.5(2)长度为11的有序序列:1,12,13,24,35,36,47,58,59,69,71进行等概率查找,如果采用顺序查找,则平均查找长度为(___________),如果采用二分查找,则平均查找长度为(___________),如果采用哈希查找,哈希表长为15,哈希函数为H(key)=key%13,采用线性探测解决地址冲突,即d i=(H(key)+i)%15,则平均查找长度为(保留1位小数)(___________)。

答案:6,3,1.6(3)在折半查找中,查找终止的条件为(___________)。

答案:找到匹配元素或者low>high?(4)某索引顺序表共有元素275个,平均分成5块。

若先对索引表采用顺序查找,再对块元素进行顺序查找,则等概率情况下,分块查找成功的平均查找长度是(___________)。

答案:31(5)高度为8的平衡二叉树的结点数至少是(___________)。

答案: 54 计算公式:F(n)=F(n-1)+F(n-2)+1(6)对于这个序列{25,43,62,31,48,56},采用的散列函数为H(k)=k%7,则元素48的同义词是(___________)。

答案:62(7)在各种查找方法中,平均查找长度与结点个数无关的查找方法是(___________)。

答案:散列查找(8)一个按元素值排好的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,平均比较次数分别是s和b,在查找成功的情况下,s和b的关系是(___________);在查找不成功的情况下,s和b的关系是(___________)。

答案:(1)(2s-1)b=2s([log2(2s-1)]+1)-2[log2(2s-1)]+1+1(2)分两种情况考虑,见解答。

数据结构简明教程(李春葆版)课后习题答案

数据结构简明教程(李春葆版)课后习题答案

数据结构简明教程(第2版)配套练习题参考答案———————数据结构简明教程———————1.练习题1参考答案1.单项选择题(1)D (2)C (3)C (4)A (5)C (6)B (7)C (8)A (9)C (10)B 2.填空题(1)①逻辑结构 ②存储结构 ③运算(不限制顺序)(2)①线性结构 ②非线性结构(不限制顺序)(3)①数据元素 ②关系(4)①没有 ②没有(5)①前驱 ②一 ③后继 ④任意多个(6)任意多个(7)①顺序 ②链式 ③索引 ④哈希(不限制顺序)(8)①时间 ②空间(不限制顺序)(9)问题规模(通常用n 表示)。

(10)辅助或临时空间3.简答题(1)答:运算描述是指逻辑结构施加的操作,而运算实现是指一个完成该运算功能的算法。

它们的相同点是,运算描述和运算实现都能完成对数据的“处理”或某种特定的操作。

不同点是,运算描述只是描述处理功能,不包括处理步骤和方法,而运算实现的核心则是处理步骤。

(2)答:T 1(n )=O(n log 2n ),T 2(n )=O( ),T 3(n )=O(n 2),T 4(n )=O(n log 2n )。

(3)答:j =0,第1次循环:j =1,s =10。

第2次循环:j =2,s =30。

第3次循环:j =3,s =60。

第4次循环:j =4,s =100。

while 条件不再满足。

所以,其中循环语句的执行次数为4。

(4)答:语句s ++的执行次数2)2)(3(3)1()1(12121-+=++-+=+-=∑∑∑-=-==n n n n i n n i n i i nj。

(5)答:其中x ++语句为基本运算语句,∑∑∑=+==-=-==n i n i j ni n n i n n T 1112)1()(1)(=O(n 2)。

(6) 答:由于内循环j 的取值范围,所以i ≤n /2,则,该程序段的时间复杂度为O(n 2)。

∑∑∑-===--==2/122/124/))12((n i nij n i n i n m 3log 2n2.练习题2参考答案1.单项选择题(1)A (2)C (3)A (4)B (5)C(6)D (7)C (8)B (9)A (10)C(11)B (12)A (13)C (14)D (15)D(16)D (17)A (18)C (19)A (20)D2.填空题(1)L.length=0(2)O(1)(3)O(n)(4)n-i(5)①物理存储位置②指针域(6)①前驱 ②O(n)(7)q=p->next; p->next=q->next; free(q);(8)s->next= p->next; p->next=s;(9)O(1)(10)L->next==L3.简答题(1)答:顺序存储结构中,逻辑上相邻元素的存储空间也是相邻的,无需额外空间表示逻辑关系,所以存储密度大,同时具有随机存取特性。

数据结构第七章的习题答案

数据结构第七章的习题答案

数据结构第七章的习题答案数据结构第七章的习题答案数据结构是计算机科学中非常重要的一门学科,它研究如何组织和管理数据以便高效地访问和操作。

第七章是数据结构课程中的一个关键章节,它涵盖了树和二叉树这两个重要的数据结构。

本文将为读者提供第七章习题的详细解答,帮助读者更好地理解和掌握这些概念。

1. 问题:给定一个二叉树,如何判断它是否是二叉搜索树?解答:要判断一个二叉树是否是二叉搜索树,我们可以使用中序遍历的方法。

中序遍历会按照从小到大的顺序访问二叉树中的节点。

所以,如果一个二叉树是二叉搜索树,那么它的中序遍历结果应该是一个有序的序列。

具体实现时,我们可以使用递归或者迭代的方式进行中序遍历,并将遍历的结果保存在一个数组中。

然后,我们检查这个数组是否是有序的即可判断二叉树是否是二叉搜索树。

2. 问题:给定一个二叉树,如何找到它的最大深度?解答:要找到一个二叉树的最大深度,我们可以使用递归的方式。

对于每个节点,它的最大深度等于其左子树和右子树中的最大深度加1。

递归的终止条件是节点为空,此时深度为0。

具体实现时,我们可以定义一个递归函数,该函数接收一个节点作为参数,并返回以该节点为根节点的子树的最大深度。

在递归函数中,我们先判断节点是否为空,如果为空则返回0;否则,我们分别计算左子树和右子树的最大深度,然后取两者中的较大值加1作为当前节点的最大深度。

3. 问题:给定一个二叉树,如何判断它是否是平衡二叉树?解答:要判断一个二叉树是否是平衡二叉树,我们可以使用递归的方式。

对于每个节点,我们分别计算其左子树和右子树的高度差,如果高度差大于1,则该二叉树不是平衡二叉树。

具体实现时,我们可以定义一个递归函数,该函数接收一个节点作为参数,并返回以该节点为根节点的子树的高度。

在递归函数中,我们先判断节点是否为空,如果为空则返回0;否则,我们分别计算左子树和右子树的高度,然后取两者中的较大值加1作为当前节点的高度。

最后,我们判断左子树和右子树的高度差是否大于1,如果大于1,则该二叉树不是平衡二叉树。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 7 章 树和二叉树
教材中练习题及参考答案
1. 有一棵树的括号表示为 A(B,C(E,F(G)),D),回答下面的问题: (1)指出树的根结点。 (2)指出棵树的所有叶子结点。 (3)结点 C 的度是多少? (4)这棵树的度为多少? (5)这棵树的高度是多少? (6)结点 C 的孩子结点是哪些? (7)结点 C 的双亲结点是谁? 答:该树对应的树形表示如图 7.2 所示。 (1)这棵树的根结点是 A。 (2)这棵树的叶子结点是 B、E、G、D。 (3)结点 C 的度是 2。 (4)这棵树的度为 3。 (5)这棵树的高度是 4。 (6)结点 C 的孩子结点是 E、F。 (7)结点 C 的双亲结点是 A。
12. 假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法 计算一棵给定二叉树 b 中的所有单分支结点个数。 解:计算一棵二叉树的所有单分支结点个数的递归模型 f(b)如下:
f(b)=0 若 b=NULL
6 f(b)=f(b->lchild)+f(b->rchild)+1 f(b)=f(b->lchild)+f(b->rchild)
表7.1 二叉树bt的一种存储结构 1 lchild data rchild 0 j 0 2 0 h 0 3 2 f 0 4 3 d 9 5 7 b 4 6 5 a 0 7 8 c 0 8 0 e 0 9 10 g 0 10 1 i 0
答:(1)二叉树bt的树形表示如图7.3所示。
a b c e h j f i d g e h j c f i b d g a
对应的算法如下:
void FindMinNode(BTNode *b,char &min) { if (b->data<min) min=b->data; FindMinNode(b->lchild,min); //在左子树中找最小结点值 FindMinNode(b->rchild,min); //在右子树中找最小结点值 } void MinNode(BTNode *b) //输出最小结点值 { if (b!=NULL) { char min=b->data; FindMinNode(b,min); printf("Min=%c\n",min); } }
2
数据结构教程学习指导
=n-1=1×n1+2× n2+3× n3+4× n4。综合两式得:n0=n2+2n3+3n4+1=3+2× 2+3× 2=14。 3. 为了实现以下各种功能,其中 x 结点表示该结点的位置,给出树的最适合的存储结 构: (1)求 x 和 y 结点的最近祖先结点。 (2)求 x 结点的所有子孙。 (3)求根结点到 x 结点的路径。 (4)求 x 结点的所有右边兄弟结点。 (5)判断 x 结点是否是叶子结点。 (6)求 x 结点的所有孩子。 答:(1)双亲存储结构。 (2)孩子链存储结构。 (3)双亲存储结构。 (4)孩子兄弟链存储结构。 (5)孩子链存储结构。 (6)孩子链存储结构。 4. 设二叉树 bt 的一种存储结构如表 7.1 所示。 其中, bt 为树根结点指针, lchild、 rchild 分别为结点的左、右孩子指针域,在这里使用结点编号作为指针域值,0 表示指针域值为 空;data 为结点的数据域。请完成下列各题: (1)画出二叉树 bt 的树形表示。 (2)写出按先序、中序和后序遍历二叉树 bt 所得到的结点序列。 (3)画出二叉树 bt 的后序线索树(不带头结点)。
33
0 1
18
0 1 0
15
1Leabharlann 90 19 f 4 c
7 d
8 e
5
0 1
a
2
3
b
图7.6
一棵哈夫曼树
10. 假设二叉树中每个结点的值为单个字符,设计一个算法将一棵以二叉链方式存储 的二叉树 b 转换成对应的顺序存储结构 a。
第 7 章 树形结构
5
解:设二叉树的顺序存储结构类型为 SqBTree,先将顺序存储结构 a 中所有元素置为 ‘#’ (表示空结点) 。将 b 转换成 a 的递归模型如下:
11. 假设二叉树中每个结点值为单个字符,采用顺序存储结构存储。设计一个算法, 求二叉树 t 中的叶子结点个数。 解: 用 i 遍历所有的结点, 当 i 大于等于 MaxSize 时, 返回 0。 当 t[i]是空结点时返回 0; 当 t[i]是非空结点时,若它为叶子结点,num 增 1;否则递归调用 num1=LeftNode(t,2*i) 求出左子树的叶子结点个数 num1,再递归调用 num2=LeftNode(t,2*i+1)求出右子树的叶 子结点个数 num2,置 num+=num1+num2。最后返回 num。对应的算法如下:
第 7 章 树形结构 图 7.3 二叉树 bt 的逻辑结构 图 7.4 二叉树 bt 的后序线索化树
3
(2)先序序列:abcedfhgij 中序序列:ecbhfdjiga 后序序列:echfjigdba (3)二叉树 bt 的后序序列为 echfjigdba,则后序线索树如图 7.4 所示。 5. 含有 60 个叶子结点的二叉树的最小高度是多少? 答:在该二叉树中,n0=60,n2=n0-1=59,n=n0+n1+n2=119+n1,当 n1=0 且为完全二叉 树时高度最小,此时高度 h=log2(n+1)= log2120=7。所以含有 60 个叶子结点的二叉树的 最小高度是 7。 6. 已知一棵完全二叉树的第 6 层(设根结点为第 1 层)有 8 个叶子结点,则该完全二 叉树的结点个数最多是多少?最少是多少? 答:完全二叉树的叶子结点只能在最下面两层,所以结点最多的情况是第 6 层为倒数 第 2 层,即 1~6 层构成一棵满二叉树,其结点总数为 26-1=63。其中第 6 层有 25=32 个结 点,含 8 个叶子结点,则另外有 32-8=24 个非叶子结点,它们中每个结点有两个孩子结点 (均为第 7 层的叶子结点) ,计为 48 个叶子结点。这样最多的结点个数=63+48=111。 结点最少的情况是第 6 层为最下层,即 1~5 层构成一棵满二叉树,其结点总数为 5 2 -1=31,再加上第 6 层的结点,总计 31+8=39。这样最少的结点个数为 39。 7. 已知一棵满二叉树的结点个数为 20~40 之间,此二叉树的叶子结点有多少个? 答:一棵高度为 h 的满二叉树的结点个数为 2h-1,有:20≤2h-1≤40。 则 h=5,满二叉树中叶子结点均集中在最底层,所以叶子结点个数=25-1=16 个。 8. 已知一棵二叉树的中序序列为 cbedahgijf,后序序列为 cedbhjigfa,给出该二叉树树 形表示。 答:该二叉树的构造过程和二叉树如图 7.5 所示。
根:g 左中序:h,右中序:ij 左后序:h,右后序:ji
根:e 左中序:空,右中序:空 左后序:空,右后序:空
根:h 左中序:空,右中序:空 左后序:空,右后序:空
根:i 左中序:空,右中序:j 左后序:空,右后序:j
根:j 左中序:空,右中序:空 左后序:空,右后序:空 图 7.5 二叉树的构造过程
数据结构教程学习指导 若 b 结点为单分支 其他情况
对应的算法如下:
int SSonNodes(BTNode *b) { int num1,num2,n; if (b==NULL) return 0; else if ((b->lchild==NULL && b->rchild!=NULL) || (b->lchild!=NULL && b->rchild==NULL)) n=1; //为单分支结点 else n=0; //其他结点 num1=SSonNodes(b->lchild); //递归求左子树中单分支结点数 num2=SSonNodes(b->rchild); //递归求右子树中单分支结点数 return (num1+num2+n); }
f(b,a,i) f(b,a,i) a[i]='#'; 由 b 结点 data 域值建立 a[i]元素; f(b->lchild,a,2*i); f(b->rchild,a,2*i+1) 当 b=NULL 其他情况
调用方式为:f(b,a,1)(a 的下标从 1 开始) 。对应的算法如下:
void Ctree(BTNode *b,SqBTree a,int i) { if (b!=NULL) { a[i]=b->data; Ctree(b->lchild,a,2*i); Ctree(b->rchild,a,2*i+1); } else a[i]='#'; }
A B E C F G 图 7.2 一棵树 D
2. 若一棵度为 4 的树中度为 2、3、4 的结点个数分别为 3、2、2,则该树的叶子结点 的个数是多少? 答:结点总数 n=n0+n1+n2+n3+n4,又由于除根结点外,每个结点都对应一个分支,所 以总的分支数等于 n-1。而一个度为 i(0≤i≤4)的结点的分支数为 i,所以有:总分支数
第 7 章 树形结构 void Copy(BTNode *b1,BTNode *&b2) { if (b1==NULL) b2=NULL; else { b2=(BTNode *)malloc(sizeof(BTNode)); b2->data=b1->data; Copy(b1->lchild,b2->lchild); Copy(b1->rchild,b2->rchild); } }
4
数据结构教程学习指导 根:a 左中序:cbed,右中序:hgijf 左后序:cedb,右后序: hjigf
相关文档
最新文档