亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java實現二叉樹的建立、計算高度與遞歸輸出操作示例

2024-07-14 08:43:41
字體:
來源:轉載
供稿:網友

本文實例講述了Java實現二叉樹的建立、計算高度與遞歸輸出操作。分享給大家供大家參考,具體如下:

1. 建立 遞歸輸出 計算高度 前中后三種非遞歸輸出

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("/n/n/n輸入 節點信息:");            head.SetCode(sc.nextInt());            System.out.println("/n建立 左 子樹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("/n當前位置:" + head.GetCode());            System.out.println("/n建立 右 子樹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("/n當前位置:" + head.GetCode());            System.out.println(head.GetLtree() != null);            if(head.GetLtree() != null){                System.out.println("/n訪問 左子樹:");                output( head.GetLtree() );            }            if(head.GetRtree() != null){                System.out.println("/n訪問 右子樹:");                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( "/n/n/n" );            }        }    }    /*     * 非遞歸 中序遍歷     */    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( "/n/n/n" );            }        }    }    /*     * 非遞歸 后續遍歷     */    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( "/n/n/n" );            }        }    }}

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("/n二叉樹高度-->" + link_1st.GetSave());        link_1st.output(head);        System.out.println("Output Over  !");        System.out.println("/n/n<----------------前------------------>/n前序訪問根:");        link_1st.Front_Traverse(head);        System.out.println("/n/n<----------------中------------------>/n中序訪問根:");        link_1st.Center_Traverse(head);        System.out.println("/n/n<----------------后------------------>/n后序訪問根:");        link_1st.Bottom_Traverse(head);        System.out.println("/n/n/n/nText over !/n/n/n");    }}

希望本文所述對大家java程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91夜夜揉人人捏人人添红杏| 成人精品福利视频| 97国产成人精品视频| 成人免费在线视频网址| 亚洲午夜女主播在线直播| 色午夜这里只有精品| 成人网在线免费观看| 久久最新资源网| 91免费视频网站| 在线观看91久久久久久| 亚洲一二三在线| 日韩精品欧美国产精品忘忧草| 国产精品成人国产乱一区| 欧美视频一区二区三区…| 九九热最新视频//这里只有精品| 91免费国产网站| 久久视频这里只有精品| 中文字幕欧美日韩| 26uuu另类亚洲欧美日本一| 人人做人人澡人人爽欧美| 91欧美精品午夜性色福利在线| 亚洲欧美制服中文字幕| 欧美裸身视频免费观看| 91精品国产91久久久久| 性欧美暴力猛交69hd| 欧美裸体视频网站| 精品国产一区久久久| 国产亚洲精品久久久久久| 国产日韩在线视频| 日本午夜在线亚洲.国产| 欧美激情视频在线观看| 尤物yw午夜国产精品视频明星| 最近2019好看的中文字幕免费| 一本色道久久综合狠狠躁篇怎么玩| 欧美床上激情在线观看| 亚洲国产精品999| 亚洲日本中文字幕| 亚洲精品电影在线观看| 亚州欧美日韩中文视频| 国产亚洲a∨片在线观看| 亚洲福利视频网| 色综合色综合久久综合频道88| 欧美成人精品三级在线观看| 日韩精品免费综合视频在线播放| 欧美日韩成人网| 精品中文字幕久久久久久| 欧美尤物巨大精品爽| 国产一区二区三区久久精品| 日韩电影免费在线观看| 97国产真实伦对白精彩视频8| 黑人精品xxx一区| 成人妇女免费播放久久久| 中文字幕日韩精品有码视频| 色噜噜狠狠狠综合曰曰曰| 亚洲黄色成人网| 欧美日韩中文字幕| 国产91精品最新在线播放| 成人精品久久久| 亚洲成人av在线播放| 久久精品国产亚洲精品| 久99久在线视频| 黑丝美女久久久| 国产亚洲欧洲在线| 国产精品成人aaaaa网站| 欧美成人亚洲成人日韩成人| 国产精品日韩欧美综合| 欧美福利小视频| 亚洲国产97在线精品一区| 亚洲精品自拍第一页| 91chinesevideo永久地址| 亚洲伦理中文字幕| 国产精品激情av电影在线观看| 国产精品亚洲综合天堂夜夜| 国产成人一区二区在线| 欧美一级bbbbb性bbbb喷潮片| 欧美一区三区三区高中清蜜桃| 欧美性生交xxxxxdddd| 午夜精品久久久久久久久久久久| 国产在线精品一区免费香蕉| 欧美一区二区三区……| 一区二区亚洲欧洲国产日韩| 欧美精品一区在线播放| 亚洲风情亚aⅴ在线发布| 韩国三级电影久久久久久| 亚洲天堂男人的天堂| 97精品视频在线观看| 欧美亚州一区二区三区| 亚洲а∨天堂久久精品喷水| 国产精品第2页| 亚洲精美色品网站| 久久久久久网站| 国产精品一区二区性色av| 午夜精品视频在线| 色噜噜久久综合伊人一本| 亚洲一区二区久久久久久久| 4438全国成人免费| 国外成人在线播放| 成人乱色短篇合集| 久久69精品久久久久久国产越南| 日本人成精品视频在线| 日韩理论片久久| 成人免费观看网址| 精品久久久久久国产91| 欧美视频裸体精品| 91九色国产社区在线观看| 91免费看国产| 日韩精品免费在线视频| 亚洲欧美国产精品va在线观看| 日韩欧美国产激情| 国产成人啪精品视频免费网| 亚洲精品中文字幕女同| 亚洲天堂av在线免费| 成人欧美一区二区三区在线湿哒哒| 久久大大胆人体| 久久夜色精品国产亚洲aⅴ| 亚洲免费av网址| 欧美三级欧美成人高清www| 亚洲欧美日韩爽爽影院| 亚洲一区二区久久久| 欧美日韩另类在线| 欧美激情三级免费| 18一19gay欧美视频网站| 尤物tv国产一区| 色妞色视频一区二区三区四区| 亚洲免费一在线| 欧美黄网免费在线观看| 精品女同一区二区三区在线播放| 欧美亚洲视频在线观看| 欧美电影电视剧在线观看| 欧美日韩亚洲激情| 夜夜嗨av色综合久久久综合网| 国产欧美日韩中文| 萌白酱国产一区二区| 91影院在线免费观看视频| 97人洗澡人人免费公开视频碰碰碰| 亚洲欧洲国产一区| 亚洲最新av在线网站| 国产精品第8页| 成人性生交大片免费看小说| 国产69精品久久久久9999| 性视频1819p久久| 日韩av在线高清| 久久精品国产成人| 97福利一区二区| 日韩激情视频在线| 国产suv精品一区二区| 青青久久av北条麻妃海外网| 久久精品国产视频| 亚洲精品色婷婷福利天堂| 日本欧美国产在线| 欧美成人精品一区二区三区| 国产精品高潮在线| 国产精品久久久久久久app| 国产精品老女人视频| 国产欧美精品一区二区| 亚洲一区二区在线| 亚洲国产美女精品久久久久∴| 亚州欧美日韩中文视频| 91精品久久久久久久久久入口| 亚洲一区二区三区视频播放| 亚洲一区二区免费在线| 欧美另类精品xxxx孕妇| 成人免费看吃奶视频网站| 97精品欧美一区二区三区|