【剑指offer】二叉搜索树的后序遍历序列

题目链接:二叉搜索树的后序遍历序列

 

题意:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。

 

题解:二叉搜索树是,左子树上的节点都都小于根结点,右子树上的节点大于根结点,它的子树也满足这个规则。

后序遍历是左右根遍历。因此我们只需要判断,当前节点如果是在右子树上,那么必然不会再出现比他大的节点了。

 

代码:

 1 class Solution {
 2 public:
 3     bool VerifySquenceOfBST(vector<int> sequence) {
 4         if(sequence.empty())    return false;
 5         int len = sequence.size();
 6         int root = sequence[len-1];//后序数组里最后一个数是根节点
 7         
 8         bool flag = false;
 9         for(int i = 0; i < len-1 ;i++){
10             if(sequence[i] > root)    flag = true;    //当前已经是右子树节点
11             else{
12                 if(flag)    return false;    //此时在左子树,且已经搜索过右子树
13             }
14         }
15         
16         return true;
17     }
18 };

 

posted @ 2020-03-03 20:52  甜酒果。  阅读(105)  评论(0编辑  收藏  举报