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