列印二叉樹所有路徑---JAVA實現__JAVA

來源:互聯網
上載者:User

思路:把當前結點儲存到數組當中,如果當前結點為葉子結點就列印當前數組,採取遞迴的方式來進行操作。

技巧一:就是數組的問題,所有路徑結點都存到一個數組當中,由於數組傳遞是傳址,改變數組指向內容的時候其他傳遞當前數組的方法也會受到影響,所以在參數當中還需要一個整形的變數來控制當前這個數組長度,列印的時候只是列印這個長度的數組這樣就可以進行區別了。

技巧二:能進行這樣的修改操作是因為程式是線性執行的不會產生資料錯誤的問題,一旦要是並行列印的話就會出現資料多次修改的錯誤

下面是實現代碼:

    //列印所有當前樹的所有路徑    //參數為:根節點,儲存結點的數組,控制路徑長度的整形變數    //提示 :整形變數size在這裡十分重要    public void printWay(Node root,String[] path,int size){        //如果根節點為空白直接返回        if(root == null){            return ;        }        //不為空白把根節點儲存到數組當中        path[size++] = root.getData();        //進行邏輯判斷,看當前結點是不是葉子結點 如果是葉子結點 按照長度為 size進行列印當前數組        if(root.getLeftNode()==null&&root.getRightNode()==null){            System.out.println("路徑"+(++treePath)+"為");            for(int i=0;i<size;i++){                System.out.print(path[i]+" ");            }            System.out.println();            //如果不是葉子結點遞迴進去繼續往數組中插值        }else{            printWay(root.getLeftNode(),path,size);            printWay(root.getRightNode(),path,size);        }    }

這個就是列印全部路徑的方法 全部二叉樹操作的方法請參考另一篇文章

http://blog.csdn.net/u014494703/article/details/50989223

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.