class Solution {
public boolean verifyPostorder(int[] postorder) {
return dfs(postorder, 0, postorder.length - 1);
}
boolean dfs(int[] postorder, int left, int right){
if(left >= right) return true;
// 搜索树的性质
int pointer = left;
while(postorder[pointer] < postorder[right]) ++pointer;
int mid = pointer;
while(postorder[pointer] > postorder[right]) ++pointer;
// 判断此树以及左右子树是否正确
return pointer == right &&
dfs(postorder, left, mid - 1)&&
dfs(postorder, mid, right - 1);
}
}
剑指offer33.二叉搜索树的后序遍历序列。简单易懂0ms
最新推荐文章于 2025-12-05 10:55:08 发布
本文提供了一种通过递归深度优先搜索的方法来验证一个整数数组是否能构成正确的二叉搜索树。具体实现中,利用了二叉搜索树的性质:对于任一节点,其左子树的所有节点值小于该节点值,右子树的所有节点值大于该节点值。
172万+

被折叠的 条评论
为什么被折叠?



