slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
《 计算机科学导论 》 之七 PowerPoint Presentation
Download Presentation
《 计算机科学导论 》 之七

Loading in 2 Seconds...

play fullscreen
1 / 67

《 计算机科学导论 》 之七 - PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on

《 计算机科学导论 》 之七. 陈庆章 qzchen@zjut.edu.cn. 本章主要内容. 数据结构 数组、链表、栈、队列、树 2. 文件结构 顺序文件、文本文件 索引文件、哈希文件. 数据结构:概念. 计算机是一门研究用计算机进行数据表示和处理的科学。这里面涉及到两个问题:数据 的表示和数据的处理

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '《 计算机科学导论 》 之七' - raoul


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
《计算机科学导论》之七
  • 陈庆章
  • qzchen@zjut.edu.cn
slide2
本章主要内容
  • 数据结构

数组、链表、栈、队列、树

2.文件结构

顺序文件、文本文件

索引文件、哈希文件

slide3
数据结构:概念
  • 计算机是一门研究用计算机进行数据表示和处理的科学。这里面涉及到两个问题:数据的表示和数据的处理
  • 数据的表示又直接关系到处理数据的程序的效率。随着计算机的普及,数据量的增加,数据范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。
slide4
数据结构:概念
  • 数据关系有多种形式

例如:学生名单(线性关系)

家族成员(树形关系)

  • 数据结构的研究问题:

数据之间的结构关系,包括如何表示(逻辑结构)?如何存储(存储结构)?如何处理(算法)?

slide5
数据结构:概念
  • 数据(Data):客观对象的符号表示。

例如:学号,姓名,班名都是数据。

  • 数据元素(Data Element):数据的基本单位。相当于“记录”,计算机程序中通常作为一个整体考虑和处理
  • 数据项(Data Field) : 相当于记录的“域”, 是数据的不可分割的最小单位,如学号
  • 数据对象(Data Object):性质相同的数据元素的集合. 例如: 所有班名相同的记录集合
  • 数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。
slide6

004

003

006

005

008

007

001

002

数据结构:概念
  • 数据结构的形式定义为:数据结构是一个二元组:

Data-Structure=(D,S)

其中:D是数据元素的集合,S是D上关系的集合。

例如某班学生的学号 是按顺序排列的。

学生间学号顺序关系

是一种线性结构关系

slide7

004

003

006

005

008

007

001

002

数据结构:概念
  • 例如某班学生的学号 是按顺序排列的。

学生基本情况表的二元组表示(D,S)

D = { 001,002,003,004,005,006,007,008}

S = { R }

R= {<001,002>,<002,003>,<003,004>,<004,005>,<005,006>,

<006,007>,<007,008> }

学生间学号顺序关系

是一种线性结构关系

slide8

J

I

A

C

B

D

H

G

F

E

数据结构:概念
  • 例如假设某家族有10个成员A, B, C, D, E, F, G, H,I, J,他们之间的血缘关系可以用如下图表示。

家族树的二元组表示(D,S)

D = { A,B,C,D,E,F,G,H,I,J}

S = { R }

R = {〈A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,G>,<D,H>,<D,I>,<D,J> }

slide9
数据结构:概念
  • 数据结构在计算机中有两种不同的表示方法:

顺序表示和非顺序表示

  • 由此得出两种不同的存储结构:顺序存储结构和链式存储结构
  • 顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
  • 链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。
slide10

姓名 电话号码

蔡颖 63214444

陈红 63217777

刘建平 63216666

王小林 63218888

张力 63215555

...

数据结构:线性表(数组)
  • 一、概念

线性表是n 个类型相同数据元素的有限序列,通常记作

(a1, a2, a3, …, an)

例1、数学中的数列(11,13,15,17,19,21

例2、英文字母表(A, B, C, D, E Z )。

例3、某单位的电话号码簿。

slide11
数据结构:线性表(数组)
  • 一、概念

说明:设 A=(a1, a2, ... , ai -1, ai , ai+1, …, an)是一线性表,其有如下性质:

1) 线性表的数据元素可以是各种各样的,但同一线性表中的元素必须是同一类型的;

2) 在表中 ai-1领先于ai ,ai领先于ai+1,称ai-1是ai的直接前驱,ai+1是ai的直接后继;

slide12
数据结构:线性表(数组)
  • 一、概念

3) 在线性表中,除第一个元素和最后一个元素之外,其他元素都有且仅有一个直接前驱,有且仅有一个直接后继,具有这种结构特征的数据结构称为线性结构。线性表是一种线性数据结构;

4) 线性表中元素的个数n 称为线性表的长度,n=0 时称为空表;

5) ai是线性表的第i 个元素,称i 为数据元素ai的序号,每一个元素在线性表中的位置,仅取决于它的序号;

slide13
数据结构:线性表(数组)
  • 二、线性表的存储

为了存储线性表,至少要保存两类信息:1)线性表中的数据元素;2)线性表中数据元素的顺序关系;

slide14

a1

a2

ai-1

ai

ai+1

an

数据结构:线性表(数组)
  • 二、线性表的存储:顺序存储结构

线性表的顺序存储结构,就是用一组连续的内存单元依次存放线性表的数据元素。

用顺序存储结构存储的线性表——称为顺序表

slide15
数据结构:线性表(数组)
  • 二、线性表的存储:顺序存储结构

在顺序存储结构下,线性表元素之间的逻辑关系,通过元素的存储顺序反映(表示)出来;

假设线性表中每个数据元素占用 t(教材是使用k)个存储单元,那么,在顺序存储结构中,线性表的第i个元素的存储位置与第1个元素(教材是第0个)的存储位置的关系是:

Loc(ai ) = Loc( a1 )+ ( i – 1)t

slide16

t个单元

Loc( a1 )

a1

a2

ai-1

ai

ai+1

an

Loc(ai )

如何用C语言写程序来实现

插入、删除等操作?

你采用的算法复杂度如何?

数据结构:线性表(数组)

线性表中每个数据元素占用 t(教材是使用k)个存储单元,那么,在顺序存储结构中,线性表的第i个元素的存储位置与第1个元素(教材是第0个)的存储位置的关系是:

Loc(ai )

= Loc( a1 )+ ( i – 1)t

slide17

y

x

z

z

a

p

数据结构:线性表(数组)

线性表插入图示(P点是插入点,表示在 y 之后插入一个元素a)

head

head

y

x

p

slide18

y

x

z

z

q

数据结构:线性表(数组)

线性表删除图示(q 点是要删除点)

head

p

head

x

y

p

q

slide19
数据结构:线性表(数组)
  • 二、线性表的存储:顺序存储结构

顺序表的特点:

1 通过元素的存储顺序反映 线性表中

数据元素之间的逻辑关系;

2 可随机存取顺序表的元素;

      • 顺序表的插入、删除操作要通过移动元素实现;

教材中(P199)给出两维数组的存储地址计算公式,请自己阅读理解。

slide20
数据结构:线性表(链表)
  • 二、线性表的存储:链式存储结构

线性表的链式存储结构是用一组任意的存储单元(可以连续也可以不连续)存储线性表的各个数据元素。为了表示线性表中元素的先后关系,每个元素除了需要存储自身的信息外还需保存直接前驱元素或直接后继元素的存储位置。

slide21

a4

a3

a1

a2

1010

1012

1014

1016

1018

1020

1022

1024

1026

0

1010

1024

1014

ai+1

an

a1

a2

ai-1

ai

n

数据结构:线性表(链表)
  • 二、线性表的存储:链式存储结构

用线性链表存储线性表时,数据元素之间的关系是通过保存直接后继元素的存储位置来表示的

slide22

结点

数据域

指针域

数据结构:线性表(链表)
  • 二、线性表的存储:链式存储结构(有关术语)

结点:数据元素和直接后继的存储位置(地址)组成一个数据元素的存储结构,称为一个结点;

结点的数据域 :结点中用于保存数据元素的部分;

结点的指针域 :结点中用于保存数据元素直接后继存储地址的部分;

存储后继结点

存储地址

存储数据元素

slide23

ai+1

an

n

a1

a2

ai-1

ai

数据结构:线性表(链表)

头指针:用于存放线性链表中第一个结点的存储地址;空指针:不指向任何结点,线性链表最后一个结点的指针通常是指针;头结点:线性链表的第一元素结点前面的一个附加结点,称为头结点;带头结点的线性链表:第一元素结点前面增加一个附加结点的线性链表称为 带头结点的线性链表;

怎样在计算机上

实现线性链表?

  • 二、线性表的存储:链式存储结构(有关术语)

线性链表的每个结点中只有一个指针域

故也称为单链表

head是头指针

head

空指针

头结点

slide24
数据结构:线性表(链表)
  • 二、线性表的存储:链式存储结构

线性链表的特点

1 通过保存直接后继元素的存储位置来表示

数据元素之间的逻辑关系;

2 插入删除操作通过修改结点的指针实现;

3 不能随机存取元素;

slide25

结点

指针域

数据域

指针域

数据结构:线性表(链表)
  • 三、其他形式链表:双向链表

双向链表中,每个结点有两个指针域,一个指向直接后继元素结点,另一个指向直接前驱元素结点。

存储数据元素

存储后继结点

的地址

存储前驱结点

的地址

slide26

(b)空的双向循环链表

a

b

head

(c)非空的双向循环链表

数据结构:线性表(链表)
  • 三、其他形式链表:双向链表图示
slide27

ai-1

ai

ai-1

ai

ai+1

x

数据结构:线性表(链表)
  • 三、其他形式链表:双向链表的插入与删除图示

p

p

在双向链表中插入一个结点时指针的变化情况

在双向链表中删除结点时指针变化情况

slide28

head

a1

an

head

数据结构:线性表(链表)
  • 三、其他形式链表:单向循环链表

循环链表是线性表的另一种链式存储结构,它的特点是将线性链表的最后一个结点的指针指向链表的第一个结点

(a)非空表 (b)空表

slide29

an

栈顶

a2

a1

栈底

数据结构:堆栈(栈)
  • 概念

栈是限定仅能在表的一端进行插入、删除操作的线性表

出栈

栈的特点

后进先出

进栈

第一个进栈的元素在栈底,最后一个进栈的元素在栈顶,

第一个出栈的元素为栈顶元素,

最后一个出栈的元素为栈底元素

栈的示意图

slide30

top

E

D

top

C

top

B

B

top

base

A

A

A

base

base

base

数据结构:堆栈(栈)
  • 操作

E D C 出栈

A进栈

B C D E 进栈

空栈

栈的基本操作: 

构造一个空栈;进栈操作;

出栈操作; 取栈顶元素

栈操作图示

slide31
数据结构:堆栈(栈)
  • 特点

1 栈是限定仅能在表的一端进行插入、

删除操作的线性表;

2 栈的元素具有后进先出(LIFO)或

先进后出的特点;

3 栈顶元素的位置由一个称为栈顶指针的

变量指示,进栈、出栈操作要修改栈顶指针。

slide32

如何确定运算符的运算顺序?

数据结构:堆栈(栈)
  • 应用举例

设计一个小计算器: 对键入的表达式进行求值。

高级语言中的赋值语句:变量=表达式;

表达式的构成 操作数+运算符+界符(如括号)

表达式的求值:

例 5+6 (1+2)- 4

按照四则运算法则,上述表达式的计算过程为:

5+6 (1+2)- 4=5+6 3- 4 = 5+18-4= 23-4=19

3

2

1

4

slide33
数据结构:堆栈(栈)
  • 应用举例

设计一个小计算器: 对键入的表达式进行求值。

高级语言中的赋值语句:变量=表达式;

表达式的构成 操作数+运算符+界符(如括号)

表达式的求值:

例 5+6 (1+2)- 4

按照四则运算法则,上述表达式的计算过程为:

5+6 (1+2)- 4=5+6 3- 4 = 5+18-4= 23-4=19

slide34

c2

+ - * / ( ) #

c1

+

> > < < < > >

-

> > < < < > >

*

> > > > < > >

/

> > > > < > >

(

< < < < < =

)

> > > > > >

< < < < < =

#

算符优先关系表

表达式中任何相邻运算符c1、c2的优先关系有:c1<c2:c1的优先级低于c2 c1=c2:c1的优先级等于c2 c1>c2:c1的优先级高于c2

算符间的优先关系表

注: c1c2是相邻算符, c1在左, c2在右

slide35

算符

栈内优先级

栈外优先级

4

3

  • * /

+ -

2

1

(

0

5

)

5

0

#

-1

-1

算符的优先级设置

从左向右扫描表达式:

遇操作数——进栈;

遇运算符号cj——与前面的刚扫描过的运算符ci比较 若ci<cj 则进栈cj,( 因此已保存的运算符的优先关系为 c1<c2<c3<c4。。 ) 若ci>cj 则说明ci是已扫描的运算符中优先级最高者,可进行运算;  若ci = cj 则ci为(,cj 为 ),说明括号内的式子已计算完,需要消去括号;

slide36

base

OPTR栈

OPND栈

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

top

base

表达式求值示意图:5+6(1+2)-4

=19

数据结构:堆栈(栈)

6

(

1

+

2

)

-

4

#

读入表达式过程:

5

+

×

  • 应用举例

1+2=3

6×3=18

5+18=23

23-4=19

+

(

2

1

3

×

+

18

4

6

-

#

19

23

5

slide37
数据结构:队列
  • 什么是队列

队列是限定仅能在表头进行删除,表尾进行插入的线性表

(a1, a2, ... , ai -1, ai , ai+1, …, an)

删除

插入

slide38
数据结构:队列
  • 什么是队列

队列的特点

先进先出

出队列

入队列

a1 a2 a3 an

第一个入队的元素在队头最后一个入队的元素在队尾

第一个出队的元素为队头元素

最后一个出队的元素为队尾元素

队头

队尾

队 列 的 示 意 图

slide39
数据结构:队列
  • 队列特点

1 队列是限定仅能在表尾一端进行插入,表头一端删除操作的线性表;

2 队列中的元素具有先进先出的特点;

3 队头、队尾元素的位置分别由称为队头指针和队尾指针 的变量指示,

4 入队操作要修改队尾指针,出队操作要修改队头指针;

slide40
数据结构:队列
  • 队列应用

1)解决计算机主机与外设不匹配的问题;2)解决由于多用户引起的资源竞争问题;

以上在操作系统课程中会讲到

3)离散事件的模拟----模拟实际应用中的各种排队现象;4)用于处理程序中具有先进先出特征的过程;

slide41
数据结构:树
  • 树的概念

树形结构是一种重要的非线性结构,讨论的是层次和分支关系。树是n个结点的有限集合,在任一棵非空树中:(1)有且仅有一个称为根的结点。(2)其余结点可分为个互不相交的集合,而且这些集合中的每一集合都本身又是一棵树,称为根的子树。

slide42

J

I

A

C

B

D

H

G

F

E

K

L

M

数据结构:树
  • 树的概念

T={A, B, C, D, E, F, G, H, I, J,K,L,M}

A是根,其余结点可以划分为3个互不相交的集合:

T1={B, E, F,K,L} , T2={C, G} , T3={D, H, I, J,M}

这些集合中的每一集合都本身又是一棵树,它们是A的子树。

例如 对于 T11,B是根,其余结点可以划分为2个互不相交的集合: T11={E,K,L},T12={F},T11,T12 是B 的子树。

slide43

J

I

A

C

B

D

H

G

F

E

K

L

M

数据结构:树
  • 树的概念

树的 基本术语

树的结点:包含一个数据元素及若干指向子树的分支;孩子结点:结点的子树的根称为该结点的孩子;双亲结点:B 结点是A 结点的孩子,则A结点是B 结点的双亲;兄弟结点:同一双亲的孩子结点;堂兄结点:同一层上结点;祖先结点: 从根到该结点的所经分支上的所有结点

子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙

slide44

C

文件夹1 文件夹n 文件1 文件2

文件夹11 文件夹12 文件11 文件12

数据结构:树
  • 树的概念

树常用来表达一个组织、一种文件结构等。例如Windowsd 文件结构:

slide45

E

D

C

A

B

G

F

数据结构:树
  • 二叉树的概念

二叉树: 或为空树,或由根及两颗不相交的左子树、右子树构成,并且左、右子树本身也是二叉树。

1)二叉树中每个结点最多有两颗子树;二叉树每个结点度小于等于2;

2)左、右子树不能颠倒——有序树;

3)二叉树是递归结构,在二叉树的定义中又用到了二叉树的概念;

slide46

D

E

E

D

C

C

B

A

A

B

G

G

F

F

数据结构:树
  • 二叉树的概念

(a)

(b)

(a)、(b)是不同的二叉树,

(a)的左子树有四个结点,(b)的左子树有两个结点,

slide47

φ

数据结构:树

(a)空树

  • 二叉树的基本形态

(c) 右子树空

(b)仅有根

(d) 左、右子树均在

(e) 左子树空

slide48

c

e

a

d

b

f

+

/

-

-

*

数据结构:树
  • 二叉树的应用举例

可以用二叉树表示表达式:a+b*(c-d)-e/f

slide49

E

C

A

F

D

B

A

B

C

G

数据结构:树
  • 两种特殊的二叉树

满二叉树:如果深度为k的二叉树,有2k-1个结点则称为满二叉树;

K=3的满二叉树

K=2的满二叉树

slide50
数据结构:树
  • 两种特殊的二叉树

完全二叉树:如果一颗二叉树只有最下一层结点数可能未达到最大,并且最下层结点都集中在该层的最左端,则称为完全二叉树;

slide51

E

B

E

C

A

F

D

A

B

E

D

A

D

B

C

C

G

G

数据结构:树
  • 两种特殊的二叉树

(a)

(b)

(a)、(b)完全二叉树

(c) 不是完全二叉树

(c)

slide52

A

C

B

D

E

F

数据结构:树
  • 二叉树的性质

性质1 在二叉树的第i 层上最多有2i-1个结点

性质2 深度为k的二叉树最多有 2k-1 个结点

slide53

F

A

E

D

C

B

数据结构:树
  • 二叉树的性质

对完全二叉树的结点编号:从上到下,每一层从左到右

1

2

3

4

5

6

在完全二叉树中编号为i的结点

1)若有左孩子,则左孩编号为2i

2)若有右孩子,则右孩子结点编号为2i+1

3)若有双亲,则双亲结点编号为INT(i/2),INT为取整意思

slide54

F

A

E

D

C

B

0 1 2 3 4 5 6 7 m-1

A B C D E F

数据结构:树

1

2

3

  • 二叉树的存储:顺序结构

4

5

6

满二叉树或完全二叉树的顺序结构

用一组连续的内存单元,按编号顺序依次存储完全二叉树的元素.例如,用一维数组bt[ ]存放一棵完全二叉树,将标号为 i 的结点的数据元素存放在分量 bt[i-1]中。存储位置隐含了树中的关系,树中的关系是通过完全二叉树的性质实现的。例如,bt[5](i=6)的双亲结点标号是k=INT(i/2)=3,双亲结点所对应的数组分量bt[k-1]=bt[2]

slide55
数据结构:树
  • 二叉树的存储:顺序结构

非完全二叉树的顺序结构按完全二叉树的形式补齐二叉树所缺少的那些结点,对二叉树结点编号,将二叉树原有的结点按编号存储到内存单元“相应”的位置上。但这种方式对于畸形二叉树,浪费较大空间。

slide56

B

A

E

D

C

B

C

D

A

G

G

F

F

0 1 2 3 4 5 6 7 8 9 10 m-1

A B C D E 0 F 0 0 G

数据结构:树
  • 二叉树的存储:顺序结构

1

2

3

4

5

E

6

7

10

8

9

slide57

E

F

D

B

A

C

A

B∧

C∧

∧E∧

∧D

∧F∧

数据结构:树
  • 二叉树的存储:链式结构

二叉链表中每个结点包含三个域:数据域、左指针域、右指针域

slide58

E

F

D

B

A

C

A

B

C

D

E

F

数据结构:树
  • 二叉树的存储:链式结构

也可以采用三叉链表,此时每个结点包含四个域:数据域、双亲指针域、左指针域、右指针域

slide59

如何访问二叉树的每个结点,

而且每个结点仅被访问一次?

数据结构:树
  • 二叉树的遍历

遍历:按某种搜索路径访问二叉树的每个结点,而且每个结点仅被访问一次。

访问:含义很广,可以是对结点的各种处理,如修改结点数据、输出结点数据。

遍历是各种数据结构最基本的操作,许多其他的操作可以在遍历基础上实现。

slide60

D

E

C

G

B

A

F

数据结构:树
  • 二叉树的遍历方法
  • 二叉树由根、左子树、右子树三部分组成
  • 二叉树的遍历可以分解为:访问根,遍历左子树和遍历右子树
  • 二叉树的遍历

令:L:遍历左子树T:访问根结点R:遍历右子树

有六种遍历方法:

T L R,L T R,L R T,

T R L,R T L,R L T

约定先左后右,有三种遍历方法: T L R、L T R、L R T,分别称为先序遍历、中序遍历、后序遍历

slide61

D

E

C

G

B

A

F

数据结构:树

先序遍历(T L R)

若二叉树非空 (1)访问根结点;

(2)先序遍历左子树; (3)先序遍历右子树;

  • 二叉树的遍历

例:先序遍历右图所示的二叉树

(1)访问根结点A

(2)先序遍历左子树:即按 T L R 的顺序遍历左子树

(3)先序遍历右子树:即按 T L R 的顺序遍历右子树

先序遍历序列:A,B,D,E,G,C,F

slide62

D

E

C

G

B

A

F

数据结构:树

中序遍历(L T R)

若二叉树非空(1)中序遍历左子树(2)访问根结点

(3)中序遍历右子树

  • 二叉树的遍历

例:中序遍历右图所示的二叉树

(1)中序遍历左子树:即按 L T R 的顺序遍历左子树

(2)访问根结点A

(3)中序遍历右子树:即按 L T R 的顺序遍历右子树

中序遍历序列: D,B,G,E,A,C,F

slide63

D

E

C

G

B

A

F

数据结构:树

后序遍历(L R T)

若二叉树非空(1)后序遍历左子树(2)后序遍历右子树

(3)访问根结点

  • 二叉树的遍历

例:后序遍历右图所示的二叉树

(1)后序遍历左子树:即按 L R T 的顺序遍历左子树

(2)后序遍历右子树:即按 L R T 的顺序遍历右子树

(3)访问根结点A

后序遍历序列: D,G,E,B,F,C,A

slide64

e

c

a

d

b

f

/

*

-

-

+

例:先序遍历、中序遍历、后序遍历下图所示的二叉树

数据结构:树
  • 二叉树的遍历

先序遍历序列:-,+,a,*,b,-,c,d,/,e,f

中序遍历序列:a,+,b,*,c,-,d,-,e,/,f

后序遍历序列:a,b,c,d,-,*,+,e,f,/,-

slide65
数据结构:树
  • 二叉树小结

1 二叉树: 或为空树,或由根及两颗不相交的左子树、右子树构成,并且左、右子树本身也是二叉树;

2 二叉树即可以用顺序结构存储,也可用链式结构存储;

3 遍历:按某种搜索路径访问二叉树的每个结点,每个结点仅被访问一次。 二叉树的遍历可以分解为:访问根,遍历左子树和遍历右子树,本课程介绍了三种遍历算法:先序遍历、中序遍历、后序遍历;

slide66
习题
  • 栈S初始状态为空,现有5个元素组成的序列{1,2,3,4,5},对该序列在栈S上一次进行如下操作(从序列中的1开始,出栈后不再进栈):进栈、进栈、进栈、出栈、进栈、出栈、进栈。问出栈的元素序列是______
  • 给出一棵二叉树的中序遍历:DBGEACHFI 与后序遍历:DGEBHIFCA ,画出此二叉树。