搜索二叉树的后序遍历判断

来源:互联网 发布:python数据分析 pdf 编辑:程序博客网 时间:2024/06/01 17:22
/** * 搜索二叉树的后序遍历判断 */import java.util.Arrays;public class Test24_VerifyBST{    public static void main(String[] args)    {                        //定义一个待判断数组        //int[] arr1 = {2, 4, 3, 8, 11, 10, 7};        int[] arr1 = {5, 7, 6, 9, 11, 10, 8};        int[] arr2 = {7, 4, 6, 5};        int[] arr3 = {1, 2, 3, 7, 4, 6, 5};                //判断是否为BST        System.out.println("数组arr1:"+verifySequenceOfBST(arr1));        System.out.println("数组arr2:"+verifySequenceOfBST(arr2));        System.out.println("数组arr3:"+verifySequenceOfBST(arr3));            }    private static boolean verifySequenceOfBST(int[] arr)    {        if(arr == null){            return false;        }        int length = arr.length;        int root = arr[length-1];        //寻找左子树及其结束位置(i-1)        int i = 0;        for(; i<arr.length -1; i++){            if(arr[i] > root)                break;        }        //寻找右子树        int j = i;        for(; j<arr.length-1; j++){            if(arr[j] < root)                return false;        }                //递归判断左子树和右子树是否符合上述条件(二叉搜索树) 当只剩下一个元素时, i=0,j=arr.lenght-1=0结束所有判断,返回true        boolean left = true;        if(i > 0){                        left = verifySequenceOfBST(Arrays.copyOfRange(arr, 0, i));        }        boolean right = true;        if(j < arr.length-1){            right = verifySequenceOfBST(Arrays.copyOfRange(arr, j, arr.length-1));        }        return (left && right);            }}


1 0
原创粉丝点击