二叉树的遍历技巧

来源:互联网 发布:linux环境apache ab 编辑:程序博客网 时间:2024/05/16 06:28
 

图片

 

二叉树遍历其实是比较容易的,只是有的老师教什么经过某个点几次,什么去了又回到某个点那种方法比较繁琐
我就讲讲自己的方法
遍历要注意一点,只要他的下方还有子树,那要看一看是否该遍历
1.先序
先结点,再左枝,再右枝
无论怎么遍历我们都应该注意到的一点就是大方向,比如先序,先遍历A,然后遍历大的左指数,然后遍历大的右指数。开始,A是根结点,两边是他的子树,所以,我们先遍历A,然后遍历大左子树,因为对于大左子树来说B是根结点,所以先遍历B,然后遍历以根结点为B的左子树,这时D又成了根结点,遍历D,然后遍历H,再遍历I,接着,我们又遍历B为根结点的右子树,右边,先遍历右子树根结点E,然后遍历他的左子树,这样以A为根结点的坐子树就遍历完了。然后右子树也很容易得出CFG,所以顺序ABDHIEJCFG
2.中序
先左子树,再结点,再右子树
把握大方向,先左,我们要从最左边那个开始,先H,然后D,然后I,因为DHI和EJ相当于是以B为根结点的左右子树,所以遍历B,然后B,然后B的右子树,右子树也应该是左中右,所以先J再E,反正只要这棵树下面还有树,我们就要考虑是否要先遍历它,好了HDIBJE了哈,大方向上大左子树完了,现在右子树吗,NO,大方向上我说过A是大左子树和大右子树的根结点,所以左中右,把A遍历了,然后大右子树,因为C下方还有子树,所以我们考虑是否先遍历它的子树呢,对,所以先F,再C,再G。不过假如我们把F划掉,那就是CG,即便他下面的有子树,但是我说过,左中右,它没来,所以就CG了。就这样,HDIBJEAFCG.
3.后序
我不想强调太多,大方向,你懂的,先大左,再大右,最后根结点,所以,最左边那个是谁呢,先H,然后I,注意了,子树DHI和EJ相当于是B为根结点的左右子树,所以先看EJ子树,这里E下有子树的,左右中,所以J,然后E没右子树呢,所以直接E,注意前面我说的左中右,所以该B了,这样大左就完了,然后大右,方法一样,大右一完,最后就该是最大方向上的A了,就这样,HIDJEBFGCA
 
 
我叙述不大行,语文功底差,怕别人不懂,所以有点啰嗦,不过希望对学到树的程序爱好者有所帮助。