class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { vector<int> right; vector<int> left; int size = sequence.size(); int last = sequence[size - 1]; if (size== 0) { return false; } //left int mid = 0; for (int i = 0; i<(size); ++i) { if (sequence[i] < last) { left.push_back(sequence[i]); ++mid; } else break; } //right for (int j = mid; j < (size-1); ++j) { if (sequence[j]>last) { right.push_back(sequence[j]); } else { return false; break; } } bool leftresult=true; bool rightresult=true; if (!left.empty()) { bool leftresult = VerifySquenceOfBST(left); } if (!right.empty()) { bool rightresult = VerifySquenceOfBST(right); } return(leftresult&&rightresult); } };
本文提供了一个C++实现的方法来验证一个整数序列是否能构成合法的二叉搜索树。通过递归地将序列分为左右子树并验证每个子序列,确保所有左子树节点小于根节点且右子树节点大于根节点。
351

被折叠的 条评论
为什么被折叠?



