剑指offer-23:二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列
https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&&tqId=11176&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)
示例1:
输入:[4,8,6,12,16,14,10]
返回值:true
思路:
1:后序遍历是左右根,所以核心点是最后的那个根节点
2:设置一个像指针一样的count
3:由于二叉搜索树的性质是,左子树<根<右子树,因此,遍历出来的序列,刚开始是左子树,全都比最后一个根节点小,然后是右子树,全都比最后一个根节点大,所以我们可以利用这个特点来进行解题 ``` function verifysquenceofbst(sequence) { write code here if(!sequence.length) return false let len="sequence.length-1" while(len){ count="0" while(sequence[count]<sequence[len]){ count++ } while(sequence[count]>sequence[len]){
count++
}
if(count</根<右子树,因此,遍历出来的序列,刚开始是左子树,全都比最后一个根节点小,然后是右子树,全都比最后一个根节点大,所以我们可以利用这个特点来进行解题>