遍历与访问
A. 二叉树的前序中序后序遍历访问顺序是怎么回事啊搞不懂
树的遍历的三种情况,是根据左子树、右子树、根这3者的不同访问次序来定义的。根左右(根先访问),则为先序遍历;左根右,则为中序遍历;左右根,则为后序遍历。举例如下:前序遍历结果为:ABC中序遍历结果为:BAC后续遍历结果为:BCA
B. 按照先序遍历访问二叉树,应该是多少
先序遍历也叫做先根遍历、前序遍历,可记做根左右(二叉树父结点向下先左后右)。
首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返回。
所以这道题的解题如下:
访问根结点A,接着访问它的左子树,(A)
它的左子树的根结点B,接着访问它的左子树,(AB)
它的左子树的根结点D,接着访问它的左子树,左子树为空,访问它的右子树F(ABDF)
它的右子树F无子结点,回到根结点D的层次,左右子树访问完毕
回到根结点B的层次,访问它的右子树根结点E,(ABDFE)
接着访问它的左子树G,且G无子结点,退回根结点E的层次,访问它的右子树H,且H无子结点,E的子树访问完毕,(ABDFEGH)
退回根结点B的层次,B的子树访问完毕,
退回根结点A的层次,访问它的右子树C,且C无子结点,返回A的层次,A的左右子树访问完毕,且A是这个二叉树的根结点,故完成先序遍历(ABDFEGHC)
C. java ArrayList 随机访问、遍历 性能
说ArrayList在进行随机访问和遍历元素时,能提供较好的性能应该是跟LinkList对比的吧,插入删除操作多的话用LinkList比较好,《Java编程思想》是这样说的
D. 二叉树先根、中根、后根遍历详细访问顺序
你可以参考下这个问题
这个是中根遍历的详细过程
http://..com/question/89674628.html
理解以后应该能理解前根以及后根的遍历顺序
前根遍历顺序为根->左子树->右子树
那个题目前根遍历的顺序为1-2-4-5-3-6-7
后根遍历顺序为左子树->右子树->根
此题的后根遍历顺序为4-5-2-6-7-3-1
E. 说明图遍历算法中设置访问标志数组的作用
图中结点可能有多个前驱,设置访问标志数组主要是为了避免重复访问同一个结点。
图的遍历是从图中的某个顶点出发,按照某种方法对图中的所有顶点访问且仅访问一次。为了保证图中的各顶点在遍历过程中仅访问一次,需要为每个顶点设一个访问标志。
例如可以为图设置一个访问标志数组visited[n],用于标示图中每个顶点是否被访问过,其初始值为0(“假”)。如果访问过顶点vi ,则设置visited[i]为1(“真”)。
(5)遍历与访问扩展阅读
由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:
① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点。
② 在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需考虑如何选取下一个出发点以访问图中其余的连通分量。
③ 在图结构中,如果有回路存在,那么一个顶点被访问之后,有可能沿回路又回到该顶点。
④ 在图结构中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,存在如何选取下一个要访问的顶点的问题。
F. 深度优先遍历,如何判断已经访问
深度优先遍历,如何判断已经访问方法,首先选定一个未被访问过的顶点V作为起始顶点(或者访问指定的起始顶点V),并将其标记为已访问过;
(2)然后搜索与顶点V邻接的所有顶点,判断这些顶点是否被访问过,如果有未被访问过的顶点,则任选一个顶点W进行访问;再选取与顶点W邻接的未被访问过的任一个顶点并进行访问,依次重复进行。当一个顶点的所有的邻接顶点都被访问过时,则依次回退到最近被访问的顶点。若该顶点还有其他邻接顶点未被访问,则从这些未被访问的顶点中取出一个并重复上述过程,直到与起始顶点V相通的所有顶点都被访问过为止。
G. 对连通图进行一次先深遍历可访问图的全部顶点,对吗
图的遍历从图中某一顶点出发,按某种搜索方法访遍其余顶点,且使每一顶点仅被访问一次。这一过程称为图的遍历。遍历图的基本搜索方法有两种:深度优先搜索DFS(Depth First Search)和广度优先搜索BFS(Broad First Search)。这两种方法都适用于有向图和无向图。图的遍历算法设计需要考虑3个问题: (1)图的特点没有首尾之分,所以算法的参考要指定访问的第一个顶点。 (2)对图的遍历路径有可能构成一个回路,从而造成死循环,所以算法设计要考虑遍历路径可能的回路问题。 (3)一个顶点可能和若干个顶点都是想邻顶点,要使一个顶点的所有想邻顶点按照某种次序被访问。对于连通图,从初始顶点出发一定存在路径和图中的所有其他顶点相连,所以对于连通图从初始顶点出发一定可以遍历该图。图的深度优先遍历图的深度优先遍历DFS算法是每次在访问完当前顶点后,首先访问当前顶点的一个未被访问过的邻接顶点,然后去访问这个邻接点的一个未被访问过的邻接点,这样的算法是一个递归算法。 1.连通图的深度优先遍历算法思想。(1)访问初始顶点v并标记顶点v已访问。(2)查找顶点v的第一个邻接顶点w。(3)若顶点v的邻接顶点w存在,则继续执行;否则回溯到v,再找v的另外一个未访问过的邻接点。(4)若顶点w尚未被访问,则访问顶点w并标记顶点w为已访问。(5)继续查找顶点w的下一个邻接顶点wi,如果v取值wi转到步骤(3)。直到连通图中所有顶点全部访问过为止。【例】 现以图 7.9 ( a )为例说明深度过优先搜索过程。假定 v 1 是出发点,首先访问 v 1 。因 v 1 有两个邻接点 v 2 、 v 3 均未被访问过,可以选择 v 2 作为新的出发点,访问 v 2 之后,再找 v 2 的未访问过的邻接点。同 v 2 邻接的有 v 1 、 v 4 、 v 5 ,其中 v 1 已被访问过,而 v 4 、 v 5 尚未被访问过,可以 v 4 选择作为新的出发点。重复上述搜索过程,继续依次访问 v 8 、 v 5 。访问 v 5 之后,由于与 v 5 相邻的顶点均已被访问过,搜索退回到 v 8 。由于 v 8 、 v 4 、 v 2 都是已被访问的邻接点,所以搜索过程连续地从 v 8 退回到 v 4 , 再退回到 v 2 ,最后退回到 v 1 。这时选择 v 1 的未被访问过的邻接点 v 3 ,继续往下搜索,依次访问 v 3 、 v 6 、 v 7 ,从而遍历了图中全部顶点。