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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++层次遍历_动画:二叉树遍历的多种姿势

發布時間:2024/10/14 c/c++ 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++层次遍历_动画:二叉树遍历的多种姿势 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在《什么是二叉樹》中,我們介紹了二叉樹的創建(插入),查找和刪除,本文將介紹二叉樹的遍歷。而二叉樹遍歷有多種形式,他們也可以應用在不同的場景中,常見的深度優先遍歷方式有前序遍歷,中序遍歷,后序遍歷,而不常用廣度優先遍歷方式有層次遍歷。本文將會對以上遍歷方式都進行介紹。

二叉樹的遍歷

常見遍歷順序有以下幾種:

  • 前序遍歷,先檢查節點值,然后遞歸遍歷左子樹和右子樹
  • 中序遍歷,先遍歷左子樹,然后檢查當前節點值,最后遍歷右子樹
  • 后序遍歷,先遞歸遍歷左右子樹,然后檢查當前節點值
  • 層次遍歷,如名字所言,從第一層開始,一層一層往下遍歷

以下圖為例,我們一一介紹四種遍歷方式。

前序遍歷

  • 輸出當前節點值10,然后輸出左子樹,最后輸出右子樹;
  • 對于其左子樹來說,同樣以這樣的順序,則先輸出5,然后輸出左子樹4,最后輸出右子樹8;
  • 對于其右子樹,同樣以這樣的順序,則先輸出19,然后輸出左子樹13,最后輸出右子樹24;
  • 最終得到前序遍歷輸出為:10,5,4,8,19,13,24。

前序遍歷代碼:

void

中序遍歷:

  • 先輸出左子樹,然后輸出當前節點10,最后輸出右子樹;
  • 對于其左子樹來說,同樣以這樣的順序,則先輸出左子樹4,然后輸出節點值5,最后輸出右子樹8;
  • 對于其右子樹,同樣以這樣的順序,則先,輸出左子樹13,然后輸出節點值19,最后輸出右子樹24;
  • 最終得到中序遍歷輸出為:4,5,8,10,13,19,24。

我們發現二叉查找樹的中序遍歷輸出就是排序后的結果。還記得嗎,二叉查找樹也叫二叉搜索樹或者二叉排序樹。

中序遍歷代碼:

void

后序遍歷

  • 先輸出左子樹,然后輸出右子樹,最后輸出節點值10
  • 對于其左子樹來說,同樣以這樣的順序,則先輸出左子樹4,然后輸出右子樹8,最后輸出節點值5;
  • 對于其右子樹,同樣以這樣的順序,則先,輸出左子樹13,然后輸出右子樹24,最后輸出節點值19
  • 最終得到后序遍歷輸出為:4,8,5,13,24,19,10

后序遍歷代碼:

void

層次遍歷

  • 遍歷第一層,輸出10
  • 遍歷第二層,輸出5,19
  • 遍歷第三層,輸出4,8,13,24

雖然看起來過程很簡單,但是代碼實現卻不能像前面三種深度優先遍歷方式那樣直接使用遞歸,它更好的方式是借助一個具有先入先出特點的隊列(隊列可參考隊列-C語言實現)。以三個節點為例,我們先將根節點入隊,然后分別入隊左右孩子節點,最后輸出隊列內容,那么它的順序就是層次遍歷的順序了。

頭結點入隊:

10

輸出,隊頭元素10,并將它的左右孩子5,19入隊:

519

輸出隊頭元素5,并將它的左右孩子4,8入隊:

1948

輸出隊頭元素19,并將它的左右孩子13,24入隊:

481324

由于隊列中的元素都沒有孩子節點,因此都直接出隊,輸出4,8,13,24

最終得到的輸出順序為:10,5,19,4,8,13,24.

關鍵代碼如下:

void

完整可運行代碼

完整代碼較長,請訪問:traversal.c
運行結果:

insert 10 to tree insert 5 to tree insert 19 to tree insert 4 to tree insert 8 to tree insert 13 to tree insert 24 to tree層次遍歷:10 5 19 4 8 13 24 前序遍歷:10 5 4 8 19 13 24 后序遍歷:4 8 5 13 24 19 10 中序遍歷:4 5 8 10 13 19 24

思考

前面三種遍歷方式都是直接printf輸出,如果需要遍歷返回一個數組呢?該如何實現?難點在哪?

總結

以上是生活随笔為你收集整理的c++层次遍历_动画:二叉树遍历的多种姿势的全部內容,希望文章能夠幫你解決所遇到的問題。

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