• java版二叉树算法实现


     1 import java.util.ArrayList;
     2 class BinaryTree {
     3   private static class TreeNode {
     4     int data;
     5     TreeNode left;
     6     TreeNode right;
     7     TreeNode(int data){
     8       this.data = data;
     9       left = null;
    10       right = null;
    11     }
    12   }
    13   
    14   static int[] arr = {1,2,3,4,5,6,7,8,9};
    15   static ArrayList<TreeNode> tree = new ArrayList<TreeNode>();
    16   private static void creatTree() {
    17     for(int i = 0; i < arr.length; i++) {
    18       tree.add(new TreeNode(arr[i]));
    19     } 
    20 
    21     // 建立父亲与孩子关系
    22     for(int i = 0; i <= arr.length / 2 - 1; i++) {
    23       tree.get(i).left = tree.get(i * 2 + 1);
    24       tree.get(i).right = tree.get(i * 2 + 2);
    25     }
    26    // int lastParent = arr.length / 2 - 1;
    27    // tree.get(lastParent).left = tree.get(lastParent * 2 + 1);
    28    // if(arr.length % 2 == 1) {
    29    //   tree.get(lastParent).right = tree.get(lastParent * 2 + 2);
    30    // }
    31   }
    32   private static void preOrder(TreeNode node){
    33     if(node == null) return;
    34     System.out.print(node.data + " ");
    35     preOrder(node.left);
    36     preOrder(node.right);
    37   }
    38              
    39   private static void inOrder(TreeNode node) {
    40     if(node == null) return;
    41     inOrder(node.left);
    42     System.out.print(node.data + " ");
    43     inOrder(node.right);
    44   }
    45 
    46   private static void postOrder(TreeNode node) {
    47     if(node == null) return;
    48     postOrder(node.left);
    49     postOrder(node.right);
    50     System.out.print(node.data + " ");  
    51   }
    52 
    53   public static void main(String[] args) {
    54    creatTree();
    55    TreeNode root = tree.get(0);
    56    System.out.println("先序:");
    57    preOrder(root);
    58    System.out.println();
    59    System.out.println("中序:");
    60    inOrder(root);
    61    System.out.println();
    62    System.out.println("后序:");
    63    postOrder(root);
    64    System.out.println();
    65 
    66 
    67 
    68   }
    69 }

    以arraylist为数组结构实现的一个完全二叉树,第n个结点的左孩子为2n+1,右孩子为2n+2

  • 相关阅读:
    jQuery插件之artDialog
    jQuery插件之ajaxFileUpload
    jQuery插件之Cookie
    jQuery插件之Form
    jQuery与DOM对象的转换
    jQuery之AJAX
    jQuery之元素筛选
    jQuery之位置
    POJ2096 概率dp 入门
    Sichuan State Programming Contest 2012 C。Counting Pair
  • 原文地址:https://www.cnblogs.com/taixuyingcai/p/5289614.html
Copyright © 2020-2023  润新知