24.二叉树的后序遍历序列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ling_hun_pang_zi/article/details/81635848

24.二叉树的后序遍历序列

题目描述

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

class Solution {
public:
     bool VerifySquenceOfBST(vector<int> sequence) {
          if (sequence.empty())
              return false;
          return SequenceJustiy(sequence, 0, sequence.size() - 1);
     }
     bool SequenceJustiy(vector<int> s, int start, int root)
     {
          if (start >= root)//递归终止的条件
              return true;
          //从后面开始找
          int i = root;
          while (i > start && s[i - 1] > s[root])
              i--;  //找到比根小的坐标
          //从前面开始找,start到i-1  应该都要比根小
          for (int j = start; j < i - 1; j++)
          {
              if (s[j] > s[root])
                   return false;
          }
          return SequenceJustiy(s, start, i - 1) && SequenceJustiy(s, i, root - 1);
     }
};

猜你喜欢

转载自blog.csdn.net/ling_hun_pang_zi/article/details/81635848