Javaは、二叉ツリーの確立、計算高さおよび再帰的出力動作例を実現する。

10827 ワード

本論文の例は、Javaが二叉樹の確立、計算高さ、再帰的出力動作を実現することを述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
1.再帰的出力計算の高さのうち、後の3つの非再帰的出力を確立する

public class Tree_Link {
    private int save = 0;
    private int now = 0;
    Scanner sc = new Scanner(System.in);
    /*
     *     
     */
    Tree_Link(){
    }
    /*
     *     
     */
    public Tree Link_Build(Tree head){
//        Tree head = new Tree();//   
        System.out.println("  code:1");
        int flag = sc.nextInt();
        if(flag != 1){
            return head;
        }else{
            System.out.println("


:"); head.SetCode(sc.nextInt()); System.out.println("
code:1 :0"); flag = sc.nextInt(); if(flag == 1){ now++; Tree LTree = new Tree(); head.SetLtree(LTree); LTree.SetFronttree(head);// Link_Build( head.GetLtree() ); } System.out.println("
:" + head.GetCode()); System.out.println("
code:1 :0"); flag = sc.nextInt(); if(flag == 1){ now++; Tree Rtree = new Tree(); head.SetRtree(Rtree); Rtree.SetFronttree(head);// Link_Build( head.GetRtree() ); } if( now > save ){ save = now; } now--; } return head; } /* * */ public Tree output(Tree head){ int flag; if(head.GetCode() == -1){ return head; }else{ System.out.println("
:" + head.GetCode()); System.out.println(head.GetLtree() != null); if(head.GetLtree() != null){ System.out.println("
:"); output( head.GetLtree() ); } if(head.GetRtree() != null){ System.out.println("
:"); output( head.GetRtree() ); } } return head; } /* * */ public int GetSave(){ return this.save; } /* * */ public void Front_Traverse(Tree head){ Tree star = head;// int choose = 1; // int flag = 1; // System.out.println( "<--- --->" + head.GetCode() );// while(true){ if( head.GetLtree() != null && choose != 0 ){ head = head.GetLtree(); System.out.println( "<--- --->" + head.GetCode() );// flag = 1; }else if( head.GetRtree() != null && flag != 0 ){ head = head.GetRtree(); System.out.println( "<--- --->" + head.GetCode() ); choose = 1; }else if( flag == 0 && choose == 0 && head == star){ break; }else{ if(head == head.GetFronttree().GetRtree()){ flag = 0; choose = 0; } if(head == head.GetFronttree().GetLtree()){ choose = 0; flag = 1; } head = head.GetFronttree(); System.out.println(" " + head.GetCode()); System.out.println( "


" ); } } } /* * */ public void Center_Traverse(Tree head){ Tree star = head;// int choose = 1; // int flag = 1; // while(true){ if( head.GetLtree() != null && choose != 0 ){ head = head.GetLtree(); flag = 1; }else if( head.GetRtree() != null && flag != 0 ){ if(head.GetLtree() == null){// System.out.println( "<-1-- --->" + head.GetCode()); } head = head.GetRtree(); choose = 1; }else if( flag == 0 && choose == 0 && head == star){ break; }else{ int area = 0;// flag = 1; choose = 1; if(head == head.GetFronttree().GetRtree()){ area = 1;// flag = 0; choose = 0; } if(head == head.GetFronttree().GetLtree()){ area = 2;// choose = 0; flag = 1; } if( head.GetLtree() == null && head.GetRtree() == null ){// System.out.println( "<-2-- --->" + head.GetCode()); } head = head.GetFronttree(); if( area == 2){// System.out.println( "<-3-- --->" + head.GetCode()); } System.out.println(" " + head.GetCode()); System.out.println( "


" ); } } } /* * */ public void Bottom_Traverse(Tree head){ Tree star = head;// int choose = 1; // int flag = 1; // while(true){ if( head.GetLtree() != null && choose != 0 ){ head = head.GetLtree(); flag = 1; }else if( head.GetRtree() != null && flag != 0 ){ head = head.GetRtree(); choose = 1; }else if( flag == 0 && choose == 0 && head == star){ break; }else{ int area = 0;// flag = 1; choose = 1; if(head == head.GetFronttree().GetRtree()){ area = 1;// flag = 0; choose = 0; } if(head == head.GetFronttree().GetLtree()){ choose = 0; flag = 1; } if(head.GetRtree() == null){// System.out.println( "<-1-- --->" + head.GetCode()); } head = head.GetFronttree(); if( area == 1){ System.out.println( "<-2-- --->" + head.GetCode()); } System.out.println(" " + head.GetCode()); System.out.println( "


" ); } } } }
2.Tree類実現:

public class Tree {
    private int code = -1;
    private Tree Fonttree;
    private Tree Ltree;
    private Tree Rtree;
    Tree(){
        this.code = -1;
        this.Ltree = null;
        this.Rtree = null;
    }
    /*
     *        :
     */
    public void SetCode(int code){//    
        this.code = code;
    }
    public int GetCode(){     //    
        return this.code;
    }
    /*
     *       :
     */
    public void SetFronttree(Tree Front){
        this.Fonttree = Front;
    }
    public Tree GetFronttree(){
        System.out.println("     ");
        return this.Fonttree;
    }
    /*
     *      :
     */
    public void SetLtree(Tree Ltree){
        this.Ltree = Ltree;
    }
    public Tree GetLtree(){
        System.out.println("     ");
        return this.Ltree;
    }
    /*
     *      :
     */
    public void SetRtree(Tree Rtree){
        this.Rtree = Rtree;
    }
    public Tree GetRtree(){
        System.out.println("     ");
        return this.Rtree;
    }
}

3.主関数テスト:

public class MainActivity {
    Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        Tree head = new Tree();
        Tree_Link link_1st = new Tree_Link();
        head = link_1st.Link_Build(head);
        System.out.println("Build succeed !");
        System.out.println("
-->" + link_1st.GetSave()); link_1st.output(head); System.out.println("Output Over !"); System.out.println("

<---------------- ------------------>
:"); link_1st.Front_Traverse(head); System.out.println("

<---------------- ------------------>
:"); link_1st.Center_Traverse(head); System.out.println("

<---------------- ------------------>
:"); link_1st.Bottom_Traverse(head); System.out.println("



Text over !


"); } }
javaアルゴリズムに関する詳細について興味がある読者は、当駅のテーマを見ることができます。「Javaデータ構造とアルゴリズム教程」、「Java操作DOMノード技術のまとめ」、「Javaファイルとディレクトリの操作テクニックのまとめ」、「Javaキャッシュ操作テクニックのまとめ
本論文で述べたように、皆さんのjavaプログラムの設計に役に立ちます。