栈的概念是什么?遍历二叉树有几种方法?

来源:百度知道 编辑:UC知道 时间:2024/06/29 03:03:31
请问栈的概念是什么?遍历二叉树有几种方法?

一楼和二楼滴筒子,栈是后进先出(先进后出)的线性表,即LIFO结构,队列才是先进先出的线性表,即FIFO结构。
三楼滴筒子,栈是限制仅在“表尾”进行插入或删除操作的。

栈:
1)栈stack是限定仅在表尾进行插入或删除操作的线性表。对栈来说,表尾有特殊的含义,称为栈顶top,表头端称为栈底bottom。不含元素的空表称为空栈。
2)栈的修改按后进先出的原则进行,总是插入或删除“栈顶元素”。
3)栈的基本操作除了在栈顶进行插入或删除外,还有栈的初始化、判空及取栈顶元素等。
如,另附:
栈的初始化操作:按设定的初始分配量进行第一次存储分配,base可称为栈底指针,在顺序栈中,它始终指向栈底的位置。若base的值为NULL,则表示栈结构不存在。top为栈顶指针,当其初值指向栈底,即top=base时可作为栈空的标记。每当插入新的栈顶元素时,指针top增1;删除栈顶元素时,指针top减1,因此,非空栈中的栈顶指针始终在栈顶元素的“下一个位置”上。

遍历二叉树:
先告诉LZ一个概念,二叉树由根结点、左子树、右子树三个基本单元组成,因此,若能依次遍历这三个部分,便是遍历了整个二叉树。所以,遍历方案要定下执行“遍历左子树”“访问根结点”“遍历右子树”这三个部分的次序。总结所有的方案后,分为以下三种情况:

先序遍历二叉树~~
若二叉树为空,则空操作,否则
1.访问根结点;
2.先序遍历左子树;
3.先序遍历右子树。

中序遍历二叉树~~
若二叉树为空,则空操作,否则
1.中序遍历左子树;
2.访问根结点;
3.中序遍历右子树。

后序遍历二叉树~~
若二叉树为空,则空操作,否则
1.后序遍历左子树;
2.后序遍历右子树;
3.访问根结点。

在数据结构学中规定,限定在执行“遍历左子树”和“遍历右子树”时先左后右,所以,三种情况实质上是因为“访问根结点”的次序不同。因此,三种方法又称作:先根序遍历、中根序遍历、后根序遍历。

栈就是一个先进先出的概念,内存是