為更好的理解后面將要介紹的選擇排序
的另一種排序算法——堆
(其他文章可能介紹的比較專業但理解起來困難,本文章盡量簡潔易懂的表達關鍵知識點),所以我先來介紹數據結構
中的二叉樹
。
樹
樹
是一種一對多
的數據結構。樹
又有很多子集,比如:二叉樹
、二叉搜索樹
、2-3樹
、紅黑樹
等等。樹
的特征:
1.沒有父結點的結點叫根
,一個數有且只有一個根
;
2.每個結點有0個或多個子結點
;
3.一顆樹
里也可擁有子樹
,且子樹
不能相交;
樹
的示例:
樹
圖中
標紅
的為上面這個樹的子樹
:其中一個子樹
度
每個結點擁有的子樹
數量稱為該結點的度
,簡單的說結點
的子節點個數
就是它的度
。例如上圖中D
結點的度為3
。度
為0
的結點成為葉節點
,也就是沒有子結點
的結點`。
葉節點`的名字很形象,就是樹枝里能長出小樹枝,小樹枝能長出葉子,但葉子不會長出樹枝,葉子是一個樹枝的末端。
二叉樹
二叉樹
是一類特殊的樹
,二叉樹
的特征:
1.每個結點最多有2個子結點
的樹(就是不存在度
大于2的結點);
2.左右子樹有一定順序(比如升序或降序,如下圖中8
的右子結點大于左子節點,結點2
和7
的子節點也是如此關系);
二叉樹
滿二叉樹
滿二叉樹
是所有非葉結點
的子結點個數都為2,看起來呈水平對稱
。其特征為:
1.所有葉結點
都在最后一層;
2.非葉結點
的所有結點的度都為2;
滿二叉樹
完全二叉樹
完全二叉樹
的特征:
1.該樹非最后一層
的結點
都是滿的;
2.最后一層的葉結點必須集中到左邊
,也就是不允許倒數第二層的結點只有右子結點
而沒左結點
。
從上面可以看出:
滿二叉樹
一定是完全二叉樹
,反過來就不一定是。
完全二叉樹的判斷
完全二叉樹
是一種高效的數據結構,堆
就是從程序實現層面上使完全二叉樹
更加容易操作(如:增、刪)的數據結構。下一篇將介紹堆
。
感謝閱讀!歡迎關注!持續更新中...