返回介绍

23.二叉搜索树的后序遍历序列

发布于 2023-08-30 21:54:39 字数 722 浏览 0 评论 0 收藏 0

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

思路:最后一个节点为根节点。

小于该节点值的为左子树,大于该节点值的为右子树。

public class Solution {
  public boolean VerifySquenceOfBST(int [] sequence) {
    if(sequence.length == 0) return false;
    return helper(sequence, 0, sequence.length-1);
  }
  private boolean helper(int[] sequence, int start, int root){
    if(start >= root) return true;
    int i = start;
    for(; i < root; i++){
      if(sequence[i] > sequence[root]) break;
    }
    for(int j = i; j < root; j++){
      if(sequence[j] < sequence[root]) return false;
    }
    return helper(sequence, start, i-1) && helper(sequence, i, root-1);
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文