日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

数据结构与算法-- 广度优先打印二叉树

發布時間:2023/12/4 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法-- 广度优先打印二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

廣度優先打印二叉樹

  • 題目:從上往下打印出二叉樹的每一個節點,同一層節點按照從左到右順序打印,例如下圖中二叉樹,依次打印出是8,6,10,5,7,9,11

  • 如上題中二叉樹的節點定義我們用之前文章 二叉樹實現原理中定義的節點結構。
  • 此處提議就是廣度優先原則的一個遍歷,但是需要一個從左到右的打印規則,和我們之前二叉樹的前序,中序,后續遍歷都不一樣,
  • 可能開始想到的是中序遍歷,每次都打印根節點,但是中序遍歷比如左子樹中所有節點在右子樹之前,和題意不符合。
  • 廣度優先原則的話我們想起之前文章:圖論,最短路算法,拓撲排序算法,其中拓撲排序算法,和最短路徑算法的優化版本都是用的廣度優先原則去遍歷圖。我們依然可以用相同的思路應對
  • 先打印根,然后將根鏈接的所有節點依據從左到有原則依次加入隊列
  • 不斷從隊列中取出節點打印,并重復上一步,直到隊列為空。
步驟操作隊列
1打印節點 8節點6, 節點10
2打印節點 6節點10, 節點5,節點7
3打印節點 10節點5,節點7,節點9,節點11
4打印節點 5節點7,節點9,節點11
5打印節點 7節點9,節點11
6打印節點 9節點11
7打印節點 11null
  • 依據以上分析可得一下代碼:
/*** 從上到下,按層打印樹* @author liaojiamin* @Date:Created in 16:29 2021/4/2*/ public class PrintBinaryTopToBottom {public static void printBinaryTopToEnd(BinaryNode binaryNode){if(binaryNode == null){return;}LinkedList<BinaryNode> myQueue = new LinkedList<BinaryNode>();myQueue.addFirst(binaryNode);while (myQueue.size() > 0){BinaryNode temp = myQueue.removeFirst();if(temp != null){System.out.print(temp.getElement());System.out.print(",");myQueue.addLast(temp.getLeft());myQueue.addLast(temp.getRight());}}}public static void main(String[] args) {BinaryNode node = new BinaryNode(null, null, null);BinarySearchTree searchTree = new BinarySearchTree();Random random = new Random();for (int i = 0; i < 20; i++) {int num = random.nextInt(100);node = searchTree.insert(num, node);System.out.print(num+",");}System.out.println();printBinaryTopToEnd(node);} }

上一篇:數據結構與算法–舉例分析法- 棧的壓入彈出序列
下一篇:數據結構與算法-- 二叉樹后續遍歷序列校驗

總結

以上是生活随笔為你收集整理的数据结构与算法-- 广度优先打印二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。