剑指offer之二叉搜索树的后序遍历序列
程序员文章站
2022-05-20 13:52:50
...
题目描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
bool VerifySquenceOfBST(int sequence[],int len)
{
if(sequence == nullptr || len <= 0)
return false;
int root = sequence[len-1];
int i = 0;
for(;i < len-1;++i)//二叉树中左子树的结点小于根结点
{
if(sequence[i] > root)
break;
}
int j = i;
for(;j < len-1;++j)//二叉树中右子树的结点大于根结点
{
if(sequence[j] < root)
return false;
}
bool left = true;
if(i > 0)
left = VerifySquenceOfBST(sequence,i);//判断左子树是不是二叉搜索树
bool right = true;
if(j < len-1)
right = VerifySquenceOfBST(sequence+i,len-i-1);//判断右子树是不是二叉搜索树
return (left && right);
}
推荐阅读
-
Python数据结构算法,二叉搜索树的后序遍历序列
-
剑指 Offer 07. 重建二叉树——【前中序】和【中后序】重建二叉树的递归思路详解
-
剑指offer面试题68 - I. 二叉搜索树的最近公共祖先(python)
-
[剑指offer] 二叉搜索树的第k大节点(C++解法)
-
python--剑指offer--简单--68 - I. 二叉搜索树的最近公共祖先
-
剑指offer54.二叉树搜索树的第k大节点
-
剑指offer 面试题63 二叉搜索树的第 k 个结点
-
剑指offer面试题63 二叉搜索树的第k个结点
-
剑指offer - 63二叉搜索树的第k个结点
-
[剑指offer]------63 二叉搜索树的第k个结点