二叉樹(Binary Tree) 是樹類應用最普遍的一種數據結構, 是非線性數據結構。顧名思義, 二叉樹的每一個節點最多隻能包含兩個子節點, 一個節點能夠包含0-2個子節點, 若是是兩個子節點, 也就是一般咱們說的左節點和右節點, 一般子樹被稱做「左子樹」 和「右子樹」 。算法
二叉樹的應用不少, 也是項目中應用最多的數據結構: 例如Map、 Set、 JVM的堆內存的邏輯存儲結構是徹底二叉樹等。
數據庫
除了二叉樹, 也有多叉樹等, 固然子節點越多, 複雜度越高, 可是其樹的高度比較低, 因此擁有較高的查找性能, 經常使用在數據庫索引和文件系統。
比較常見的一些樹名稱的種類以下:
1.徹底二叉樹數據結構
徹底二叉樹是二叉樹的一個分類, 它的特色是每一個節點的孩子節點的數量能夠是0-2 個, 除此以外,它要求每層節點添加, 必須是從左到右, 不容許跳着添加。 性能
2.滿二叉樹 (Full Binary tree)
spa
滿二叉樹它的特色是每一個節點的孩子節點要麼沒有, 要麼就是兩個, 不容許出現單個孩子的狀況。
blog
3.二叉搜索樹 (Ordered Binary Tree )排序
也稱二叉排序樹, 這個是咱們接觸的最多的一種結構, 它要求節點的左子樹小於該節點自己, 右子樹大於該節點,每一個節點都符合這樣的規則, 對二叉搜索樹進行中序遍歷就得獲得一個有序的序列 。索引
二叉搜索樹算法的排序規則:內存
a.選擇第一個元素做爲根節點;
b.以後若是元素大於根節點放在右子樹, 若是元素小於根節點, 則放在左子樹;
c.最後按照中序遍歷的方式進行輸出, 則能夠獲得排序的結果(左->根->右) ;
io
4.均衡二叉樹 (Balanced Binary Tree)
均衡二叉樹指的是一個節點的左右子樹的高度差值不能大於1, 均衡二叉樹通常都是在二叉搜索樹的基礎之上添加自動維持平衡的性質, 這種樹的插入, 搜索, 刪除的綜合效率比較高。
5.完美二叉樹 (Perfect binary Tree)
完美二叉樹是理想中的一種二叉樹, 這種樹的特色就是很是完美, 每一個節點都有兩個孩子節點, 而且每層都被完全填充, 完美二叉樹的葉子節點的高度都是同樣。