二叉树遍历(递归实现,前序,中序,后序遍历)

上篇博客介绍了构建一棵二叉树,可是并无介绍如何遍历二叉树,一下,咱们只介绍3三种遍历二叉树的形式,java

分别是,前序遍历,中序遍历,后序遍历,由于我也是学习阶段,不免会有解释不清,或者理解有误的,欢迎指正node

 

----------------------------------我是分割线------------------------------------post

咱们先定义一棵普通的二叉树,以下图学习

 

 

咱们先说前序遍历吧!

  前序遍历:经过递归进行遍历,若是二叉树为空,则操做返回,若是非空,不然从根结点开始,而后遍历左子树完左子树,在遍历右子树

前序遍历的结果是: ABDGHEICFJK 为何会遍历出这种结果,请看上面对前序遍历的描述,先遍历左边,而后在遍历右边spa

JAVA代码以下:code

//前序遍历	
public static void preTraversal(Node node){
		if(null!=node){
			System.out.println(node.getData());
			preTraversal(node.getLeft());
			preTraversal(node.getRight());
			return;
		}
	}

 

 

 

 

 

而后是中序遍历!

  中序遍历:经过递归进行遍历,若是二叉树为空,则操做返回,若是非空,不然从根结点开始,中序遍历根结点的左子树,而后访问根结点,最后中序遍历右子树

前序遍历的结果是: GDHBEIACJFK 为何会遍历出这种结果,请看上面对中序遍历的描述,先遍历左边,而后访问根结点,而后在遍历右边递归

JAVA代码以下:get

//中序遍历	
public static void inOrder(Node node){
		if(null!=node){
			inOrder(node.getLeft());
			System.out.println(node.getData());
			inOrder(node.getRight());
			return;
		}
	}

 

 

 

最后是后序遍历!

  后序遍历:经过递归进行遍历,若是二叉树为空,则操做返回,若是非空,不然从左到右,先叶子后结点的方式遍历访问左右子树,最后访问根结点

前序遍历的结果是: GHDIEBJKFCA 为何会遍历出这种结果,请看上面对中序遍历的描述,从左到右,先叶子,后结点博客

JAVA代码以下:class

//后序遍历	
public static void postOrder(Node node){
		if(null!=node){
			postOrder(node.getLeft());
			postOrder(node.getRight());
			System.out.println(node.getData());
			return;
		}
	}

 

 

以上就是二叉树的其中三种遍历方式,其中的差别性就在于递归调用的时候,对某个结点进行操做,

例如前序遍历,每次递归调用,都是先打印结点的data信息,而后是访问左叶子结点信息,又是打印结点信息,直到没有左叶子的时候,返回上层结点,而后调用右叶子,如此递归,就会出现前序遍历的结果

中序跟后序跟前序原理差很少,不一样的在于何时打印结点信息而已,就给各位看官本身看了

 

 

 

到这,文章就结束了!

以上,均为本人我的理解,比较简单的理解,或许跟各位看官理解的有出入,欢迎指正交流

欢迎转载,请注明出处跟做者,谢谢!

相关文章
相关标签/搜索