二叉樹のデータ構造の実現

2031 ワード

/**
  • は二叉の木を書きます.
  • */putblic class MyBinaryTree{prvate MyNode root]//ルートノードprvate MyBinaryTree left;/左子樹prvate MyBinaryTree Right//右子樹/*.
  • に一つの数を追加します.
  • は、現在のノードよりも小さいか、または現在のノードの左側に挿入した値を、現在のノードよりも大きな数を現在のノードの右側に挿入し、毎回ルートポイントから再帰的に比較します.
  • */public void addData(int n){if(root==null){
    root = new MyNode();
    root.setData(n);
    
    }else{
    int data = root.getData();
    if(n<=data){
        if(this.left==null)
            this.left = new MyBinaryTree();
        this.left.addData(n);
    }else{
        if(this.right==null)
            this.right = new MyBinaryTree();
        this.right.addData(n);
    }
    
    }/*
  • 優先順位
  • */public void preorder(){if(this.root!=null)
    System.out.print(root.getData()+",");
    
    if(this.left!=null)
    this.left.preorder();
    
    if(this.right!=null)
    this.right.preorder();
    
    /*
  • の順序付け
  • */public void inorder(){if(this.left)=null)
    this.left.inorder();
    
    if(this.root!=null)
    System.out.print(root.getData()+",");
    
    if(this.right!=null)
    this.right.inorder();
    
    /*
  • 後順序付け
  • */public void postorder(){if(this.left)=null)
    this.left.postorder();
    
    if(this.right)=null)
    this.right.postorder();
    
    if(this.root!=null)
    System.out.print(root.getData()+",");
    
    }
  • public static void main(String[]args){
    int[] arr = {2, 8, 7, 4 ,9,3,1,6,7,5};
    MyBinaryTree bt = new MyBinaryTree();
    for(int i=0;i<arr.length;i++){
        bt.addData(arr[i]);
    }
    System.out.println("  :");
    bt.preorder();
    System.out.println("
    :"); bt.inorder(); System.out.println("
    :"); bt.postorder();
    }}/*
  • ノードオブジェクト
  • */class MyNode{prvate int data]//記憶されているデータpublic int getData(){
    return data;
    
    }public void setData(int data){
    this.data = data;
    
    }
  • )