【java算法】二叉树遍历、求叶子数--用递归的方法

来源:互联网 发布:美国黑人解放知乎 编辑:程序博客网 时间:2024/05/17 00:14

二叉树三种递归遍历方法,用递归的方法。


遍历结果如下

前序遍历的结果是: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                                             
0 0