今天給二叉樹加個BGM,二叉樹唱歌了!

文章首發於此,並送大家一份高頻面試題高頻面試合集

老規矩,不白嫖,點贊再看!

前面咱們學習了數組,鏈表,棧,隊列,現在我們開始學習一種非線性結構,它叫做樹。那麼既然是新東西,我們就需要知道爲什麼出現樹這種數據結構,樹這種數據結構解決什麼問題,它的應用場景在哪裏?

在這裏插入圖片描述

1 樹的簡介

  • 樹爲一種非線性結構,所以其各個數據元素不再保持在一個線性序列中,每個數據元素可能與零個或者多個其他數據元素髮生聯繫。
  • 樹中每個元素稱爲結點,爲了體現結點之間的關係,分爲父節點,子節點,兄弟節點,葉節點,爲了更直觀的瞭解這幾個基本概念,我們看下圖。
    在這裏插入圖片描述
  • 一棵樹,有高度,有深度,有層數,基本概念是什麼,又是怎麼計算的呢?
    在這裏插入圖片描述
    爲了加深對概念的理解,畫個圖理解更佳。
    在這裏插入圖片描述

2 二叉樹簡介

二叉樹,在樹的基礎上加了屬性詞"二叉",兩個分支,其實上面咱們所畫的樹就是二叉樹。那麼特殊的二叉樹值得注意的是完全二叉樹和滿二叉樹,如下圖所示。

在這裏插入圖片描述

3 二叉樹存儲方式

3.1 鏈表存儲方式

我們瞭解了二叉樹的一點基本概念後,爲了表示節點之間的關係,引入鏈表結構,用左右兩個指針分別指向左節點和右節點,這樣就可以串聯整個二叉樹,如下圖所示。
在這裏插入圖片描述

3.2 數組存儲方式

我們知道數組最大的一個特點就是內存連續,方便隨機訪問,下標通常從0開始。好了,知道這些我們就先看看用數組如何存儲一棵二叉樹。

在這裏插入圖片描述
在這裏插入圖片描述

上圖我們假設A元素下標爲1(機智的小夥伴看到下標是不是就想到了數組下標),那麼它左節點B=21=2,右節點c=21+1=3,依次推理,假設元素p的下標爲i,那麼元素p的左節點爲2i,右節點爲2i+1.那麼對應於數組是怎樣的呢,如下圖所示。

3.2 二叉樹存儲方式小結

上面使用了數組和鏈表兩種方式對二叉樹進行存儲。如果爲完全二叉樹,鏈表存儲每個節點需要多兩個左右指針,而對數組而言簡直是“天籟之音”,它只需要浪費一個如上圖下標爲0的存儲位置。

4 二叉樹的遍歷

瞭解了二叉樹基本概念,用什麼存儲後,現在我們看看如何得到我們需要的節點元素,也就是所謂的遍歷。

4.1 前序遍歷

套路:先訪問根節點,再訪問左子樹,最後訪問右子樹
在這裏插入圖片描述

4.2 中序遍歷

套路:先訪問左子樹,再訪問根節點,最後訪問右子樹

在這裏插入圖片描述

4.3 後序遍歷

套路: 先訪問左子樹,再訪問右子樹,最後訪問根節點
在這裏插入圖片描述

4.4 層次遍歷

套路:逐層遍歷

在這裏插入圖片描述

5 給遍歷二叉樹加個雞腿(Bgm動畫二叉樹)

能看到這裏的小夥伴一定是最亮的仔了,那我們就來一個BGM放鬆一下。

小藍希望大家能夠開開心心的學習,並能得到好的offer!也可以分享給身邊朋友或者文末點個贊!

帶bgm二叉樹

手機端查看

6 收尾

系列算法題均採用三種不同的語言實現,滿足不同小夥伴的需求。如有不對的地方希望小夥伴指出,感謝!

❤️ 看完三件事:如果您看完有一點點收穫,快速迎娶白富美方式:

1 關注公衆號「我是程序員小賤」,第一時間閱讀最新的文章,公衆號後臺回覆 [小天使] 送你 最新的編程技術資料。
此公衆號定位

  • 一起學習面試中的高頻算法
  • 一起學習如何和麪試官掰扯
  • 一起學習簡歷的編寫
  • 海量資源共享(書籍/經典視頻教程/大廠面經)
  • 一起更快的瞭解行業新技術
  • 當然還有小夥伴的大廠經歷分享和內推
  • 還有不少小哥哥小姐姐,誰來誰知道!
    在這裏插入圖片描述
    2 點贊,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章