- public class BinaryTree {
- private Node root;
- /**
- *
- * 内部节点类
- * @author yhh
- */
- private class Node{
- private Node left;
- private Node right;
- private int data;
- public Node(int data){
- this.left = null;
- this.right = null;
- this.data = data;
- }
- }
- public BinaryTree(){
- root = null;
- }
- /**
- * 递归创建二叉树
- * @param node
- * @param data
- */
- public void buildTree(Node node,int data){
- if(root == null){
- root = new Node(data);
- }else{
- if(data < node.data){
- if(node.left == null){
- node.left = new Node(data);
- }else{
- buildTree(node.left,data);
- }
- }else{
- if(node.right == null){
- node.right = new Node(data);
- }else{
- buildTree(node.right,data);
- }
- }
- }
- }
- /**
- * 前序遍历
- * @param node
- */
- public void preOrder(Node node){
- if(node != null){
- System.out.println(node.data);
- preOrder(node.left);
- preOrder(node.right);
- }
- }
- /**
- * 中序遍历
- * @param node
- */
- public void inOrder(Node node){
- if(node != null){
- inOrder(node.left);
- System.out.println(node.data);
- inOrder(node.right);
- }
- }
- /**
- * 后序遍历
- * @param node
- */
- public void postOrder(Node node){
- if(node != null){
- postOrder(node.left);
- postOrder(node.right);
- System.out.println(node.data);
- }
- }
- public static void main(String[] args) {
- int[] a = {2,4,12,45,21,6,111};
- BinaryTree bTree = new BinaryTree();
- for (int i = 0; i < a.length; i++) {
- bTree.buildTree(bTree.root, a[i]);
- }
- bTree.preOrder(bTree.root);
- bTree.inOrder(bTree.root);
- bTree.postOrder(bTree.root);
- }
- }
Java 创建二叉树并遍历
最新推荐文章于 2024-04-16 10:46:10 发布