1.樹的概念:
節點的度:一個節點含有子樹的個數
樹的度:一個樹裏,最大的節點的度稱爲樹的度
葉節點:度爲0的節點
樹的高度或者深度:樹中節點的最大層次
子孫:以某節點爲根的節點都稱爲該根節點的子孫
森林:m棵不相交的樹
2.樹的種類:
無序樹:樹中任意節點之間沒有順序關係,稱爲無序樹,又稱自由樹
有序樹:樹中任意節點之間有順序關係,
- 二叉樹:每個節點最多含有兩個子樹
- 完全二叉樹:對於一顆二叉樹,假設其深度爲d,除了d層以外,其他各層的節點數目均已達到最大值2.且d層的葉子節點是從左往右連續的緊密的排序.
- 滿二叉樹:葉子節點只在d層的完全二叉樹
- 平衡二叉樹:(AVL)當且僅當任何節點的兩個子樹的高度差不超過1時的二叉樹
- 排序二叉樹:(二叉查找樹)二叉搜索樹,有序二叉樹(左邊的比根節點小,右邊的比根節點大)
- 哈夫曼樹:(用於信息編碼)帶權路徑最短的二叉樹
- B樹:一種對讀寫操作進行優化的自平衡的二叉查找樹,能夠保持數據有序,擁有多餘兩個子樹
二叉樹的性質:
3.應用場景
1.xml,html等,那麼編寫這些東西的解析器的時候,會用到樹
2.路由協議就是使用了樹的算法
3.MySQL數據庫索引
4.文件系統目錄結構
5.機器學習中的 decision tree