<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    邋遢居

    我的Java天堂

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

    用Graphviz顯示樹

    緣起

    前幾天不知道那根筋搭錯,又拿出了大學時候買的一本講算法的書翻了起來。想起當年學習Tree的時候,看著數(shù)據(jù)結(jié)構(gòu)憑空去想那顆倒著的樹。那個叫做苦啊。所以就像有沒有什么辦法讓Tree自己畫出這樣的結(jié)構(gòu)圖出來。

    動手

    既然想到了,就動手做把。因為以前用Graphviz畫過一點mindmap,類圖之類的小東西。讓我一下子就想到了,我只要能從Tree結(jié)構(gòu)中方便的輸出成一個能繪制出對應(yīng)樹結(jié)構(gòu)的Graphviz腳本就可以。這應(yīng)該是代價最小的做法。 呵呵,廢話不多說了。看看的Tree的代碼吧!

     @Override
        
    public String toString() {
            StringBuffer strValue 
    = new StringBuffer();
            StringBuffer rout 
    =  new StringBuffer("{rank=same ");
            
            
    if(getLeftTree()  != null ) {
                strValue.append(root).append(ARROW).append( getLeftTree().getTreeNode()).append(
    ";\r").
                            append( getLeftTree());
                rout.append(getLeftTree().getTreeNode() ).append(ARROW).append(EXTEND).append(root);
          
            }
            
            strValue.append(EXTEND).append(root).append(
    "[label=\"\",width=.1,style=invis];\r");
            strValue.append(root).append(ARROW).append(EXTEND).append(root).append(
    "[style=invis];\r");
         
            
    if(getRightTree() != null) {
                strValue.append(root).append(ARROW).append( getRightTree().getTreeNode()).append(
    ";\r").
                append( getRightTree());
           
                rout.append(ARROW).append(getRightTree().getTreeNode());
            }
            strValue.append(rout).append(
    " [style=invis] } ;\r");
            
    return strValue.toString();
        }

    產(chǎn)生腳本的動作全部在這里完成了。我通過如下代碼創(chuàng)建了一顆樹

           ITree<Integer> tree = new TreeImpl<Integer>(6);   
            tree.addNode(
    3);
            tree.addNode(
    16);
            tree.addNode(
    5);
            tree.addNode(
    4);
            tree.addNode(
    2);
            tree.addNode(
    10);
            tree.addNode(
    30);

    最后得到的一副如下的圖

    呵呵,這樣的話就可以隨時查看樹的結(jié)構(gòu)了,我們所需要做的只是把object toString一下就可以。

    附上一些文件

    演示的錄屏文件

    完整的代碼 

    posted on 2010-08-11 12:59 Jet Geng 閱讀(3817) 評論(1)  編輯  收藏 所屬分類: 開源軟件使用

    Feedback

    # re: 用Graphviz顯示樹 2010-09-09 21:06 xu
    代碼,是單元調(diào)試的嗎?運行不了,寫了一個測試的main的代碼.graphviz怎樣在結(jié)點旁邊添加標注啊?比如結(jié)點的左邊.謝謝!  回復(fù)  更多評論
      

    主站蜘蛛池模板: 曰曰鲁夜夜免费播放视频| 在线播放免费播放av片| 麻豆国产精品入口免费观看| 亚洲福利中文字幕在线网址| 久久99国产亚洲精品观看| 亚洲欧洲无卡二区视頻| a级毛片毛片免费观看永久| 中文字幕无码不卡免费视频 | 国产乱子影视频上线免费观看| 久久精品国产精品亚洲| 亚洲一区在线视频| 一区二区免费国产在线观看| 亚洲一区二区免费视频| 亚洲AV无码乱码在线观看性色扶| 亚洲好看的理论片电影| 人妻仑刮八A级毛片免费看| 中文字幕免费视频| 亚洲中文字幕丝袜制服一区| 亚洲六月丁香六月婷婷蜜芽| 一本到卡二卡三卡免费高| 免费无码AV电影在线观看| 国产亚洲一区二区手机在线观看| 亚洲国产成人精品无码区二本 | 一区二区三区在线观看免费| 午夜国产精品免费观看| 亚洲中文字幕无码不卡电影| 一本天堂ⅴ无码亚洲道久久| 成全视频高清免费观看电视剧| 最好免费观看韩国+日本| 亚洲视屏在线观看| 人人公开免费超级碰碰碰视频| 日本阿v免费费视频完整版| 亚洲精品成人片在线观看精品字幕| 亚洲AV无码国产精品永久一区| **aaaaa毛片免费同男同女| 亚洲熟妇中文字幕五十中出| 国产精品久久亚洲一区二区| 免费可以看黄的视频s色| 久久久久无码精品亚洲日韩 | 国产一级淫片a免费播放口| 亚洲AⅤ无码一区二区三区在线|