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

上篇博客介绍了构建一棵二叉树,但是并没有介绍如何遍历二叉树,一下,我们只介绍3三种遍历二叉树的形式,

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

 

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

我们先定义一棵普通的二叉树,如下图

013832_5SM6_2278977.png

 

 

我们先说前序遍历吧!

  前序遍历:通过递归进行遍历,如果二叉树为空,则操作返回,如果非空,否则从根结点开始,然后遍历左子树完左子树,在遍历右子树

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

JAVA代码如下:

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

 

 

 

 

 

然后是中序遍历!

  中序遍历:通过递归进行遍历,如果二叉树为空,则操作返回,如果非空,否则从根结点开始,中序遍历根结点的左子树,然后访问根结点,最后中序遍历右子树

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

JAVA代码如下:

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

 

 

 

最后是后序遍历!

  后序遍历:通过递归进行遍历,如果二叉树为空,则操作返回,如果非空,否则从左到右,先叶子后结点的方式遍历访问左右子树,最后访问根结点

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

JAVA代码如下:

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

 

 

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

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

中序跟后序跟前序原理差不多,不同的在于什么时候打印结点信息而已,就给各位看官自己看了

 

 

 

到这,文章就结束了!

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

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

 

转载于:https://my.oschina.net/u/2278977/blog/1538272

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值