算法总结之 二叉树的递归遍历(递归和非递归)

算法总结之 二叉树的递归遍历(递归和非递归)

递归:

package TT;

public class Test116 {
   public class Node{
	   public int value;
	   public Node left;
	   public Node right;
	   
	   public Node(int data){
		   this.value=data;
	   }
   }
   
   public void preOrderRecur(Node head){
	   if(head==null){
		   return;
	   }
	   System.out.println(head.value+"");
	   preOrderRecur(head.left);
	   preOrderRecur(head.right);
   }
   
   
   public void inOrderRecur(Node head){
	   if(head==null){
		   return;
	   }
	   inOrderRecur(head.left);
	   System.out.println(head.value+"");
	   inOrderRecur(head.right);
	   
   }
   
   public void posOrderRecur(Node head){
	   if(head==null){
		   return;
	   }
	   posOrderRecur(head.left);
	   posOrderRecur(head.right);
	   System.out.println(head.value+" ");
   }
   
}

  

下面用图形的方式解释一下这个递归的执行过程,可能有些同学对于这个过程不是很了解:

如果是这个样子的二叉树:

 

 public void preOrderRecur(Node head){
	   if(head==null){                              1
		   return;
	   }
	   System.out.println(head.value+"");           2
	   preOrderRecur(head.left);                    3
	   preOrderRecur(head.right);                   4
   }

 

首先是这样:对于每行逻辑代码 我做了个标记

对于函数的的调用时需要入栈 进栈的

 

 

 

posted @ 2017-09-12 09:34 toov5 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值