
Nukke.com的问题地址
博客文章索引地址

博客文章中代码的github地址
输入一个整数数组判断二叉排序树,以确定该数组是否是遍历二叉搜索树的结果. 如果是判断二叉排序树,则输出“是”,否则输出“否”. 假设输入数组中的任何两个数字互不相同.

示例: 序列{5,7,6,9,11,10,8}是下图中的二叉搜索树的后遍历结果.


自然:
示例:

class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
return bst(sequence, 0, sequence.size() - 1);
}
private:
bool bst(vector<int> seq, int begin, int end){
// 边界条件
if(seq.empty() || begin > end)
return false;
// 划分左右子树,并判断左右子树和根节点的关系
int i = begin;
for(; i < end; ++i)
if(seq[i] > seq[end])
break;
int j = i;
for(; j < end; ++j)
if(seq[j] < seq[end])
return false;
// 判断左子树是不是二叉搜索树
bool left = true;
if(i > begin)
left = bst(seq, begin, i - 1);
// 判断右子树是不是二叉搜索树
bool right = true;
if(i < end - 1)
right = bst(seq, i , end - 1);
return left && right;
}
};
后遍历与BST二进制树不对应
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-241124-1.html
谁告诉你是活的了
你很棒
2001年的算老旧