二叉树三种递归遍历方法,用递归的方法。
遍历结果如下
前序遍历的结果是:1 2 3 4 5 6 中序遍历的结果是:3 2 4 1 6 5 后序遍历的结果是:3 4 2 6 5 1
<pre name="code" class="java">/**
* 二叉树三种递归遍历方法
* @author fengkun
*
*/
public class BinaryTree_Three_Traversal {
//前序遍历
public static void prTraversal(Node node){
if (node!=null) {
System.out.print(node.Value+" ");
prTraversal(node.left);
prTraversal(node.right);
}
}
//中序遍历
public static void midTraversal(Node node){
if (node!=null) {
midTraversal(node.left);
System.out.print(node.Value+" ");
midTraversal(node.right);
}
}
//后序遍历
public static void behTraversal(Node node){
if (node!=null) {
behTraversal(node.left);
behTraversal(node.right);
System.out.print(node.Value+" ");
}
}
//求总的叶子数
public static int countleaf(Node n1){
int i;
if(n1==null){
i=0;
}
else if(n1.left==null&&n1.right==null){
i=1;
}
else
i=countleaf(n1.left)+countleaf(n1.right);
return i;
}
public static void main(String[] args){
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(4);
Node n5 = new Node(5);
Node n6 = new Node(6);
//构建二叉树
n1.left = n2;
n1.right = n5;
n2.left = n3;
n2.right = n4;
n5.left = n6;
System.out.print("前序遍历的结果是:");
prTraversal(n1);
System.out.print("中序遍历的结果是:");
midTraversal(n1);
System.out.print("后序遍历的结果是:");
behTraversal(n1);
System.out.print("该树的叶子节点是"+countleaf(n1));
}
}
参考《算法与数据结构(Java语言描述)》P131