二叉搜索树的后序遍历序列(剑指offer)

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

题目描述

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

链接:?rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

首先我们要知道二叉搜索树的特点:即根节点的左边小于根节点,根节点的右边大于根节点。

同时由于是后序遍历(左右根)所以,最后的是根节点,那么从前往后搜,搜到第一个大于根节点之前的都是根节点的左子树,那么之后的数应该都是根节点的右子树,也就是说大必须根结点;然后递归判断每个结点是左右子树是否符合条件。。。

class Solution {public:bool VerifySquenceOfBST(vector<int> sequence) {int len=sequence.size();if(!len) return false;int root=sequence[len-1];vector<int> ls;vector<int> rs;int i=0;for(;i<len-1;i++){if(sequence[i]>root)break;ls.push_back(sequence[i]);}//判断右子树,要求都大于rootint j=i;for(;j<len-1;j++){if(sequence[j]<root) return false;rs.push_back(sequence[j]);}//递归判断左右子树bool left=true;if(ls.size()) left=VerifySquenceOfBST(ls);bool right=true;if(rs.size()) right=VerifySquenceOfBST(rs);return left&&right ;}};

版权声明:本文为博主原创文章,未经博主允许不得转载。

,不论你在什么时候结束,重要的是结束之后就不要悔恨

二叉搜索树的后序遍历序列(剑指offer)

相关文章:

你感兴趣的文章:

标签云: