題目要求:給定一個升序排列的一維數(shù)組,根據(jù)這個數(shù)組生成一顆高度平衡的二叉排序樹索守。
例如A=[1,2,3,4,5,6,7,8];
生成的二叉排序樹
思想:使用二分法來求解访锻。
數(shù)組的low,high玖绿,middle分別指向當前范圍內(nèi)數(shù)組的最低位、最高位和中間位置叁巨。middle位置處付給當前樹的樹根斑匪,[low,middle-1]的節(jié)點都是當前樹的左子樹節(jié)點,[middle+1,high]的節(jié)點都是當前樹的右子樹節(jié)點蚀瘸,……如此循環(huán)直到low不再大于high為止狡蝶。
也就是
當low<high時,左右子樹繼續(xù)二分贮勃;
當low == high時贪惹,此時的節(jié)點為葉子節(jié)點,返回葉子節(jié)點寂嘉;
當low>high時奏瞬,此時無節(jié)點,返回空泉孩。
另外硼端,還有特殊情況也需要考慮,當給的數(shù)組為空時的處理寓搬。
代碼如下珍昨。