定義:二叉排序樹(binary sort tree)又稱二叉查詢樹。 它或者是一棵空樹;或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; (2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; (3)左、右子樹也分別為二叉排序樹。
/*
* 判斷給定序列是否為二叉查詢樹*/
public class judgepostordersearchtree
i++;
}//若左右子樹有乙個不為二叉查詢樹,則當前序列不滿足條件
boolean left = true;
left = ifispostorderserachtree(array,start,position);
boolean right = true;
right = ifispostorderserachtree(array,position,end-1);
return (left && right);
} public static void main(string args) ;
system.out.println(ifispostorderserachtree(a,0,a.length));
int b = ;
system.out.println(ifispostorderserachtree(b,0,b.length));
}}
演算法思想參考了[url]
判斷正數序列是不是二叉查詢樹的後序遍歷結果
題目 輸入乙個正數陣列,判斷該陣列是不是某二叉查詢樹的後序遍歷結果。如果是,返回true,如果不是返回false 思路 1.分治法 分解 找到乙個pivot,判斷p到pivot結點以及pivot到q 1結點的兩個子串行是否滿足條件。合併 當兩個子串行滿足條件後,判斷第乙個子串行的結點是否都小於根結點...
判斷二叉樹是不是平衡
題目 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。例如下圖 中的二叉樹就是一棵平衡二叉樹 上面的 固然簡潔,但我們也要注意到由於乙個節點會被重複遍歷多次,這種思路的時間效率不高。例如在函式 isbalance 中輸入...
判斷是不是平衡二叉樹
問題 給出一棵二叉樹,判斷它是不是二叉樹。乙個比較容易想到的做法是,採用動態規則的方法依次求出每乙個節點的左子樹深度和右子樹深度,兩者相減,絕對值大於 1 則不是平衡樹。為了避免重複計算節點的深度,應該用後序遍歷的方法,即先計算子節點的深度,再計算當前節點的深度,這樣不會出現重複計算。如下 stru...