欢迎转载,转载请注明出处:http://write.blog.csdn.net/postlist
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明:
首先,我们看看前序、中序、后序遍历的特性:
前序遍历: 1.访问根节点2.前序遍历左子树 3.前序遍历右子树
中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树
后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点
------------------------------------------------------------------------------------------
注意记上面口诀的时候要利用递归的思想,每一层的节点都可以视作其作为自己递归层的根节点,这样基本上不会写错或者弄糊涂,下面来对这句话做出解释并总结几条规律。以如图所示的树来做例子
------------------------------------------------------------------------------------------
我们先来看看先序遍历:根左右
E B || A D || C || F H || G || I || K J 序列中的||符号之前的字母代表你的思维中进行树递归时所认为的该层递归下的根节点,有点绕口,但是理解之后可以很快地按这个思路方法写出遍历。
由此我们还可以总结出第一个结论:思维中的每层递归的第一个元素一定是该层的根节点。这个结论对后面已知中序和其他人一个次序的树序列可以生成完整的树。
------------------------------------------------------------------------------------------
我们再来看看中序遍历:左根右
A|B|CD|E|FG|H|IJK 序列中的两个|符号之前的字母代表你的思维中进行树递归时所认为的该层递归下的根节点,但是要先看该根节点有无左节点。
由此我们还可以总结出第二个结论:思维中的每层递归的中间元素一定是该层的根节点。
-----------------------------------------------------------------------------------------------
来最后看看后序遍历:左右根
A C|D |B| GJK |I| H F E 序列中的两个|符号之前的字母代表你的思维中进行树递归时所认为的该层递归下的根节点,但是要先看该根节点是否还有左右节点。
由此我们还可以总结出第三个结论:思维中的每层递归的最后的元素一定是该层的根节点。
-------------------------------------------------------------------------------------------------
下面再来使用上面的这些结论来根据中序+任意一个顺序来重建二叉树(有中序的组合一定可以重建二叉树)
来看个例子:
前序遍历: GDAFEMHZ
中序遍历: ADEFGHMZ
我们利用前序遍历得出G肯定是根节点。再根据中序遍历进行划分 ADEF |G| HMZ 划分前序遍历G | DAFE | MHZ ,然后再根据第一个结论可以得出D和M一定是他那个递归层的根节点。所以可以很容易地重建出该二叉树。
-------------------------------------------------------------------------------------------------
再来看个例子:
中序遍历: ADEFGHMZ
后序遍历: AEFDHZMG
首先根据后序遍历,G肯定是根节点,再根据中序中序遍历来划分 ADEF |G| HMZ 再根据确定ADEF部分中D是各节点,,HMZ中M是根节点。所以很容易重建二叉树
-----------------------------------------------------------------------------------------------------------
以上是对3种遍历二叉树方法的总结,层序遍历就不说了,很容易理解。
------------------------------------------------------------------------------------------------------------
最后附上讲解二叉搜索树的链接,仔细读读很容易理解的。
http://student.zjzk.cn/course_ware/data_structure/web/chazhao/chazhao9.3.1.3.htm