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

xiaoxiao2025-09-01  9

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。算法思想 最后一个节点为根结点,可将数组分成两部分,左边部分为左树,右边部分为右树,进行递归循环,如果右树含有比根结点小的数据就不是后序遍历,否则为正确的后序遍历。 class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.size()==0) return false; return isBST(sequence,0,sequence.size()-1); } bool isBST(vector<int> vec,int start,int tail) { if(start>=tail) return true; int i = start ; while(i<tail&&vec[i]<vec[tail]) //左树 也可以从右树开始,则下面for循环则判断左树是否有比根结点大的 i++; for(int j=i;j<tail;j++) //寻找不符合规则的节点 if(vec[j]<vec[tail]) return false; return isBST(vec,start,i-1)&&isBST(vec,i,tail-1); } };
转载请注明原文地址: https://www.6miu.com/read-5035575.html

最新回复(0)