题意:给一串序列,判断该序列是否某二叉树的后序遍历序列
思路:后序遍历最后一个节点为根节点,前面的都可以分成连续的两部分,一部分比根节点小,另一部分比根节点大,依次分块递归判断两部分是否连续即可
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if (sequence == null || sequence.length == 0)
return false;
return solve(sequence, 0, sequence.length-1);
}
public boolean solve(int[] a, int l, int r) {
if (l >= r)
return true;
int i = l, root = a[r], mid;
for (; i < r; i++) {
if (a[i] > root)
break;
}
mid = i;
for (; i < r; i++) {
if (a[i] < root)
return false;
}
return solve(a, l, mid-1) && solve(a, mid, r-1);
}
}
来源:CSDN
作者:Huglight
链接:https://blog.csdn.net/qq_42397248/article/details/104115654