题解 | 二叉搜索树的后序遍历序列
写的有点长了。主要想注意这里要注意由于判断空树为false,所以必须就要另建一个函数来做递归
import java.util.*; public class Solution { public boolean VerifyOrder(int [] sequence) { int len = sequence.length; int root = 0; if (len != 0) root = sequence[len - 1]; if(len < 1) return true; int cont1 = 0; int cont2 = 0; for (int i = 0; i < len-1; i++) { if (sequence[cont1] < root) { cont1++; } else { break; } } if(cont1==len-1){ boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1)); return left; } for (int i = cont1; i < len; i++) { if (sequence[i] > root) { cont2++; } else { break; } } if (cont1 + cont2 < len - 1) { return false; } else { boolean left = VerifyOrder(Arrays.copyOfRange(sequence,0, cont1)); boolean right = VerifyOrder(Arrays.copyOfRange(sequence,cont1, len-1)); return (left & right); } } public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length == 0){ return false; } return VerifyOrder(sequence); } }