一、定義
二叉圖(Binary-Map),一種C++14規範中引入的高級數據結構。其集合了二叉樹和圖論的優點,在世界算法數據結構大會上由斯茂·斯迪尤德恩特首先提出。
二叉圖在形式上類似於二叉樹,其實現類似於圖論(在下面的代碼中有介紹)。由N個點,E條邊構成,E在等於N-1時二叉圖的複雜度退化為二叉樹,其主要特徵是二叉圖的深度為depth以下的點中可以以圖的方式兩兩連線,並忽略其中邊權,直接理解為兩點重合,從而達到以二叉形式實現連通環的目的。
其形式近似於完全連通的楊輝三角或子節點重合的完全二叉樹,在時間操作上遍歷可以達到O(nlog1/n)的極低複雜度。適用於LCA查詢任意點,在實現大規模數據時建樹複雜度近似級數求和。
雖然稱作二叉,但其實際上是圖論適用的內容,廣泛適用於各大領域,在最佳化近似堆維護SPFA等算法上都有套用。
完全二叉圖和滿二叉圖的原理類似,但極易由於數據退化,因此這裡不作探討。
二、STL實現
三、二叉圖的套用
這裡需要先引進一個概念,二叉圖的重心。
該重心的概念是和該數據結構同時在大會上提出的,重心的概念類似於信息學中的數據結構的樹的重心。
其主要意義出自於其幾何概念,實現由C++的標準庫進行。
二叉圖的重心通過深度優先搜尋來遍歷,從而實現了該二叉圖邊權的中心搜尋,在最大流和二叉圖對稱完備匹配中有廣泛的套用。

