递归:
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 }
首先是这样:对于每行逻辑代码 我做了个标记
对于函数的的调用时需要入栈 进栈的