算法总结之 二叉树的递归遍历(递归和非递归)
递归:
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
}
首先是这样:对于每行逻辑代码 我做了个标记
对于函数的的调用时需要入栈 进栈的