JAVA 实现二叉树 递归

来源:互联网 发布:学生购买阿里云服务器 编辑:程序博客网 时间:2024/05/29 10:22
public class CreatBiTree {/* * 题目:①用Java代码模拟实现一个二叉树结构②创建该二叉树③遍历该二叉树。 *  * 思路:二叉树:一种树状结构,一棵二叉树的“结点”(Node)最多只能拥有2个子结点,也就是度小于或等于2。 *     1)二叉树的结点个数是有限,而且可以没有结点。 *     2)一棵二叉树的树根下可以分为两个子树称为“左子树”(Left Subtree)和“右子树”(Right Subtree) *     3)前、中、后序遍历。 */private Node root;/* * 创建二叉树节点,利用内部类方式。 * @author lhy */private class Node{private Node left;//定义左节点private Node right;//定义右节点private int value;//节点值。public Node(int value){this.left = null;this.right = null;this.value = value;}}public CreatBiTree(){root = null;}/* * 递归创建二叉树,不过多解释了,直接上代码。  */public void buildTree(Node node,int value){if(root == null){root = new Node(value);}else{if(value < node.value){if(node.left == null){node.left = new Node(value);}else{buildTree(node.left,value);}}else{if(node.right == null){node.right = new Node(value);}else{buildTree(node.right,value);}}}}/* * 前序遍历也称先序遍历。 */public void preOrder(Node node){if(node != null){System.out.print(node.value+" ");preOrder(node.left);preOrder(node.right);}}/* * 中序遍历 */public void inOrder(Node node){if(node != null){inOrder(node.left);System.out.print(node.value+" ");inOrder(node.right);}}/* * 后序遍历 */public void postOrder(Node node){if(node != null){postOrder(node.left);postOrder(node.right);System.out.print(node.value+" ");}}public static void main(String[] args) {int[] a = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};CreatBiTree bTree = new CreatBiTree();for (int i = 0; i < a.length; i++) {bTree.buildTree(bTree.root, a[i]);}System.out.println("先序遍历的结果是:");bTree.preOrder(bTree.root);System.out.println("\n中序遍历的结果是:");bTree.inOrder(bTree.root);System.out.println("\n后序遍历的结果是:");bTree.postOrder(bTree.root);}}

0 0
原创粉丝点击