首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java-9. 判断整数序列是否二元查找树的后序遍历结果

2012-09-19 
java-9. 判断整数序列是不是二元查找树的后序遍历结果public class IsBinTreePostTraverse{static boolean

java-9. 判断整数序列是不是二元查找树的后序遍历结果

public class IsBinTreePostTraverse{static boolean isBSTPostOrder(int[] a){if(a==null){return false;}/*1.只有一个结点时,肯定是查找树 *2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是   6{6,5}对应的BST是5 *   / \ *   5   6 */if(a.length<=2){return true;}//多于三个结点,则递归判断return isBSTPostOrderHelper(a,0,a.length-1);}static boolean isBSTPostOrderHelper(int[] a,int s,int e){int len=a.length;if(!(s>=0&&s<len&&e>=0&&e<len)){//检查下标是否合法return false;}if(s==e||s==e-1){return true;}int i=e-1;while(a[i]>a[e])i--;//直到a[i]是e的左孩子if(s<=i&&i<e){boolean firstPart=isBSTPostOrderHelper(a,s,i);boolean secondPart=isBSTPostOrderHelper(a,i+1,e-1);return firstPart&&secondPart;}return false;}public static void main(String[] args) {int[][] a= {{5,7,6,9,11,10,8},{5,6,7},{5,7,6},{1,3,2,5,7,6,4,9,11,10,13,15,14,12,8},};for(int[] each:a){boolean re=isBSTPostOrder(each);System.out.println(re);}}}

热点排行