数据结构与算法——树与二叉树详细分享
一、樹
1、定義:由n個有限節點組成一個具有層次關系的集合,看起來像一顆倒掛的樹,特點:
2、特點:
a、每個節點有0個或多個子節點
b、沒有父節點的節點稱為根節點(A)
c、每一個非根節點有且只有一個父節點(eg:B和C的父節點為A;D和E和F的父節點為B)
eg:下圖的F節點有2個父節點,不能稱為樹結構
d、除了根節點外,每個子節點可以分為多個不相交的子樹
二、樹的術語
1、節點的度:一個節點含有的子樹的個數(節點A的度度為2,B的度為3,D的度為1,I的度為0)
2、樹的度:樹中所有節點的度的最大值(度為3)
3、葉節點:度為0的節點(I、J、K)
4、子節點:一個節點含有的子樹的根節點稱為該節點的子節點(B是A的子節點;D是B的子節點;不能說是D是A的子節點)
5、父節點:若一個節點有子節點,那么這個節點就是其子節點的父節點
6、兄弟節點:具有相同父節點的節點互稱兄弟節點
7、堂兄弟節點:在同一層的節點互稱堂兄弟節點
8、祖先節點:從根到該節點所經路徑上的所有節點(A、B、D都是I的祖先節點)
9、子孫節點:以某節點為根的子樹中的所有節點(所有節點都是A的祖先節點)
10、節點層次:根節點層次為1,其他節點層次是父節點的層次加1
11、樹的深度:樹中所有節點的層次的最大值(深度為4)
12、森林:多顆不相交的樹的集合
三、二叉樹
1、二叉樹:每個節點最多含有兩個子樹的樹稱為二叉樹
2、完全二叉樹:除了最底層外,其他各層的節點數目均達到最大值,且最底層的節點應從左往右緊密排列
3、滿二叉樹:所有葉節點都在最底層的完全二叉樹
4、二叉搜索樹:對于一個節點,它的左子樹上的所有節點的值都比它小,右子樹上的所有節點的值都比它大
四、二叉樹的存儲結構
1、順序存儲: 從上往下,從左往右的將樹存到順序表中
2、優點: 遍歷方便,可以用索引來表示節點間的關系
3、缺點: 可能會對存儲空間造成極大的浪費
遍歷結果為:5,4,C,None,None,G,H,None,None,None,None,M,N,F,O
4、適用于存完全二叉樹
5、鏈式存儲: 每個節點具有 左指針域, 數據域, 右指針域, 以此來連接
優點:不會浪費空間
遍歷結果為:5,4,C,G,H,M,N,F,O
總結
以上是生活随笔為你收集整理的数据结构与算法——树与二叉树详细分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【python】数据结构与算法之快速排序
- 下一篇: 数据结构与算法——二叉树的深度优先遍历