一:二叉树的遍历到底是怎么遍历的啊?
这个可以参考下我以前回答的
看完相信你会发现二叉树遍历很简单~
zhidao.baidu.com/...娄.html
二:二叉树遍历算法,就是给定两种遍历结果求另一种遍历顺序
首先从前序的第一个确定二叉树的根A,回到中序切割,将二叉树分为三部分:
左子树的中序DBGE,根A,右子树的中序CHF
再由左子树的前序可知左子树的根为B,于是左子树的中序被再次切分为三部分:
左子树的左子树中序D,左子树的根B,左子树的右子树的中序GE
类似地,由右子树的前序可知右子树的根为C,于是右子树的中序也被切分为三部分:
右子树的左子树为空,右子树的根C,右子树的左子树的中序HF
继续切分下去:GE的根为E、HF的根为F,直到每棵子树只有一个结点为止,最终得到的完整二叉树如下:
于是后序遍历序列为:DGEBHFCA
三:写出二叉树的先序遍历、中序遍历、后序遍历。
先序输出:
A B D G H E C K F I J
中序输出:
G D H B E A K C I J F
后序输出:
G H D E B K J I F C A
四:二叉树的三种遍历,先,中,后遍历
先序就是先遍历根,再遍历左子树,再遍历右子树。例如上图的先序遍历是:ABCDEFGHK
中序就是先遍历左子树,再遍历根,再右子树。例如上图的中序遍历是:BDCAEHGKF
后序就是先遍历左子树,再右子树,再根。例如上图的后序遍历是:DCBHKGFEA
五:二叉树的先根遍历,中根遍历和后根遍历
很显然你还不懂的遍历一棵二叉树的原理
当你拿到一棵二叉树,无论它的形状如何的千奇百怪
我们都可以将它按照如下的方式划分
根
/ \
左子树 右子树
一棵有很多个节点的二叉树可以划分为以上的形式
也可以这么理解,只要是按以上形式组合的都可以称为是二叉树
一个仅仅只有根节点的二叉树也可以划分成以上的形式,只不过他的左右子树都为空罢了
所以,我们发现,二叉树的定义其实是一个递归定义的过程
大的二叉树是由小的二叉树构建而成的
所以,当我们考虑要遍历一棵二叉树时
也是首选递归的遍历
遍历二叉树
它的基本思想是先按照上面的形式把整棵二叉树划分为3部分
哪么接下来的工作就很简单了
我们只需要将这3部分都遍历一遍就可以了(这里用到了分而治之的思想)
而对于这3部分来说
根节点的遍历无疑是最方便的,直接访问就ok了
而对于左右子树呢?
我们不难发现,左右子树其实分别成为了两棵完整的树
他们拥有各自独立的根节点,左子树和右子树
对他们的遍历,很显然应该与刚才的遍历方法一致便可
(如果上面的都理解了,那么这个题就是小菜一碟了,如果觉得无法理解,可以按照下面的方法自己多分解几棵树)
对于这个题目,中序遍历这可二叉树
先看根节点
1
/ \
左子树 右子树
我们应该先遍历左子树
也就是下面这棵树
2
/ \
4 5
对于这棵树在进行中序遍历
我们应先遍历她的左子树
他只有一个根节点4,左右子树都为空
哪么遍历这个只有一个根节点的二叉树
先访问她的左子树,为空
返回
访问该树的根节点4
在访问右子树也为空
此时饥这棵树已经被完全的遍历了
我们需要返回上一层也就是
2
/ \
4 5
这棵树
此时,她的左子树已经被访问完毕
根据中序遍历的规则
需要访问此树的根节点2
此时的访问顺序是4-2
访问了根节点
在访问右子树只有一个根节点的5(具体过程看4的访问)
5访问完毕
也就意味着
2
/ \
4 5
这棵树已经访问完了
需要返回上一层
也就是1为根的树
此时这棵树的左子树已经访问完毕
此时访问的顺序是4-2-5应该没有问题
接下来访问根节点1
在访问右子树
3
/ \
4 7
是不是觉得似曾相识???
她的访问应该跟
2
/ \
4 5
一致
哪么最终遍历的顺序也出来了
4-2-5-1-6-3-7
-----------------------------
花了10多分钟
希望对你有所帮助
顺便自己也复习下
呵呵...余下全文>>
六:二叉树的三种遍历方法
百度搜索“C实现二叉树(模块化集成,遍历的递归与非递归实现)”,这是博客园的一个博文,里面有关二叉树的前中后层遍历的递归与非递归算法,比较全面。
看不懂的话,可以上网易云课堂,有数据结构的在线浙大老师录的!课堂上有提到你问的问题!
七:二叉树根据图片怎么算遍历
前序中序后序指的是节点的访问顺序, 前序就是先访问节点, 再用前序遍历访问节点的左子树, 最后用前序遍历访问节点的右子树.
中序遍历就是先用中序遍历访问节点的左子树, 再访问节点, 最后用中序遍历访问节点的右子树.
后序遍历是先用后序遍历访问节点的左子树, 再用后序遍历访问节点的右子树, 最后访问节点.
所以这个访问你也能看出, 相当于一个递归.
对于你的图, 可以这样拆解
前序遍历是 0节点 ( 0的左子树) ( 0的右子树) = 0节点 ( 1节点 (1的左子树) (1的右子树)) ( 2节点 (2的左子树)(2的右子树)) 以此类推, 最后得出前序遍历 : 0 1 3 7 8 4 9 10 2 5 11 12 6 13 14.
中序遍历同样, 只是拆解的方式改成节点在中间 (0的左子树) 0节点 ( 0的右子树) = ( (1的左子树) 1节点 (1的右子树)) 0节点 ( (2的左子树) 2节点 (2的右子树))
= ( ((3的左子树) 3节点 (3的右子树)) 1节点 ((4的左子树) 4节点 (4的右子树)) ) 0节点 ( ((5的左子树) 5节点 (5的右子树)) 2节点 ((6的左子树) 6节点 (6的右子树)) )
所以, 得出中序遍历 7 3 8 1 9 4 10 0 11 5 12 2 13 6 14
同样的, 后序遍历你就按照 ( 0的左子树) (0的右子树) 0节点 = ( (1的左子树) (1的右子树) 1节点 ) ( (2的左子树)(2的右子树) 2节点) 0节点 这样去拆解就可以了.
最后可以得出后序遍历为 7 8 3 9 10 4 1 11 12 5 13 14 6 2 0
八:知道二叉树两种遍历 求第三种遍历 该用什么方法? 20分
序中序和后序都是指的是遍历父节点的顺序,例如前序遍历,指的就是先遍历父节点,然后是左子女,然后右子女;那么中序遍历的话就是,先左子女,然后父节点,然后右子女;后序就是先左子女,然后右子女,然后父节贰
你只要记住这个序指的什么就好了,二叉树遍历这三种顺序都是先左子女后右子女的
九:二叉树四种遍历方法的前向迭代器代码?
二叉树的遍历: (1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树; (2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树; (3)后序遍历(LRD)首先遍历左子树,然后访问遍历右子树,最后访问根结点。
十:二叉树,如何从两种遍历的结果推出另一种遍历?方法简单详细一点。注意不是编程求解
这个问题呢其实很简单,去年考试我们就考到了 1.中序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
(1)遍历左子树;
(2)访问根结点;
(3)遍历右子树。
2.先序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
(1) 访问根结点;
(2) 遍历左子树;
(3) 遍历右子树。
3.后序遍历得递归算法定义:
若二叉树非空,则依次执行如下操作:
(1)遍历左子树;
(2)遍历右子树;
(3)访问根结点。
比如你知道一个程序的先序遍历是ABCDEFG 中序遍历是CBDAEGF让你推算出后序遍历
因为先序遍历的顺序是根-左-右 那么我们看先序遍历ABCDEFG,那么A就是根
再看中序遍历CBDAEGF,根据中序遍历的左-根-右 看出A左边CBD的都是左子树,右边的EGF是左子树
然后对先序遍历划分 A/BCD/EFG
对左子树CBD 由先序遍历中的A/BCD/EFG可以看出BCD中B在前面 则B是左子树的根 C是下一行的左子树
同理可对EFG分析
那么画出图 A
/ \
B E
/\ \
C D F
/
G
那么后序遍历CDBGFEA
我当初也学了一段时间,比较绕是吧
我在这写了半天 不知道你能看懂不
不行的加我Q