标签:
1 class Solution { 2 public: 3 bool VerifySquenceOfBST(vector<int> sequence) { 4 if(sequence.empty()) 5 return false; 6 int root=sequence.back();//后序遍历的最后一个节点为根节点 7 //在二叉搜索树中左子节点小于根节点,其中i为左右子树的分支点,根据i的值判断左右子树的存在性及其位置 8 vector<int> leftSeq; 9 int i; 10 for(i=0;i<sequence.size()-1;++i) 11 { 12 if(sequence[i]>root) 13 break; 14 else 15 leftSeq.push_back(sequence[i]); 16 } 17 //在二叉搜索树种右子节点大于根节点,如果存在小于根节点的数值直接退出 18 vector<int> rightSeq; 19 int j; 20 for(j=i;j<sequence.size()-1;++j) 21 { 22 if(sequence[j]<root) 23 return false; 24 else 25 rightSeq.push_back(sequence[j]); 26 } 27 28 //判断左子树是否是二叉搜索树 29 bool left=true; 30 if(i>0) 31 left=VerifySquenceOfBST(leftSeq); 32 33 //判断右子树是否是二叉搜索树 34 bool right=true; 35 if(i<sequence.size()-1) 36 right=VerifySquenceOfBST(rightSeq); 37 38 return (left&&right); 39 } 40 };
标签:
原文地址:http://www.cnblogs.com/lou424/p/5047710.html