深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。(可细分为先序遍历,中序遍历和后序遍历),通常采用栈(堆)实现。
广度优先遍历:又叫层序遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。通产采用队列实现。
实例说明:

如图为一棵二叉树
深度优先遍历的顺序为:(由左至右)
A——>B——>D——>E——>H——>C——>F——>G——>I
实现步骤:
①A结点入栈;
②A结点出栈,A结点的子节点进栈(如果先遍历左节点,则右结点先入栈,反之左节点先入栈)。假设此时右节点先入栈,则先push©,再push(B),出栈时则B先出,C后出。
③B出栈,B结点的字结点进栈,同步骤②,先push(E),再push(D)。
④D出栈,此时D没有子结点,就不用执行进栈操作。
⑤E出栈,当D出栈之后,E结点在栈顶位置,所以E出来。E出栈之后,E的子结点进栈。
⑥…按照此规律,直到遍历完整颗树为止。
广度优先遍历的顺序为:(每层结点从左往右)
A——>B——>C——>D——>E——>F——>G——>H——>I
实现步骤:
①A入队
②A出队,A的子结点入队,先插入B,再插入C
③B出队,B的子结点入队,先插入D,再

本文详细介绍了二叉树的深度优先遍历(包括先序、中序、后序)和广度优先遍历的原理。深度优先遍历采用栈实现,先访问根节点,然后按顺序访问子节点。广度优先遍历采用队列实现,逐层从左到右访问节点。并以具体实例展示了遍历过程。

最低0.47元/天 解锁文章
2623

被折叠的 条评论
为什么被折叠?



