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

2018-10-08  本文已影响0人  小小的白菜

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

  // 找住二叉查找树的特点:左子树<根<右子树  使用分治思想
  function VerifySquenceOfBST(sequence) {
    if (sequence.length === 0) return false
    if (sequence.length === 1) return true
    return judge(sequence, 0, sequence.length - 1)
  }

  function judge(arr, start, end) {
    if (start >= end) {
      return true
    }
    let i = start
    while (arr[i] < arr[end]) { // 左部分
      ++i
    }
    for (let j = i; j < end; j++) { // 右部分
      if (arr[j] < arr[end]) {
        return false
      }
    }
    return judge(arr, start, i - 1) && judge(arr, i, end - 1)
  }
上一篇 下一篇

猜你喜欢

热点阅读