9.判断整数序列是不是二元查找树的后序遍历结果
2014-12-22 15:18
369 查看
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
8
/ \
6 10
/ \ / \
5 7 9 11
因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
分析:对于每一棵二叉树,后序遍历中根节点是最后遍历的,对于左子树比根节点小,所以先把左子树抽取出来,然后判断剩下的节点值是否都大于根节点,然后递归判断即可。
代码实现:
#include<iostream>
using namespace std;
bool isSquenceOfBST(int sequence[],int length)
{
if(sequence==NULL||length<=0)//考虑比较全面
return false;
int root=sequence[length-1];
int i=0,j;
while(sequence[i]<root) ++i;
for(j=i;j<length-1;++j)
{
if(sequence[j]<=root)
return false;
}
bool left=true,right=true;
if(i>0)
left=isSquenceOfBST(sequence,i);
if(i<length-1)
right=isSquenceOfBST(sequence+i,length-1-i);
return left&&right;
}
int main()
{
int a[10005],n;
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>a[i];
if(isSquenceOfBST(a,n))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
8
/ \
6 10
/ \ / \
5 7 9 11
因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
分析:对于每一棵二叉树,后序遍历中根节点是最后遍历的,对于左子树比根节点小,所以先把左子树抽取出来,然后判断剩下的节点值是否都大于根节点,然后递归判断即可。
代码实现:
#include<iostream>
using namespace std;
bool isSquenceOfBST(int sequence[],int length)
{
if(sequence==NULL||length<=0)//考虑比较全面
return false;
int root=sequence[length-1];
int i=0,j;
while(sequence[i]<root) ++i;
for(j=i;j<length-1;++j)
{
if(sequence[j]<=root)
return false;
}
bool left=true,right=true;
if(i>0)
left=isSquenceOfBST(sequence,i);
if(i<length-1)
right=isSquenceOfBST(sequence+i,length-1-i);
return left&&right;
}
int main()
{
int a[10005],n;
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>a[i];
if(isSquenceOfBST(a,n))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
相关文章推荐
- 第九题(判断整数序列是不是二元查找树的后序遍历结果)
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果(9)
- 微软100题第9题(判断整数序列是不是二元查找树的后序遍历结果)
- 程序员面试题100题第06题——判断整数序列是不是二元查找树的后序遍历结果
- 【算法】判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 第9题:判断整数序列是不是二元查找树的后序遍历结果
- 算法-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果 C++实现
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果(树)
- 判断整数序列是不是二元查找树的后序遍历结果
- 【编程题目】判断整数序列是不是二元查找树的后序遍历结果,如果是,构建该二元查找树
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 【数据结构】【输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果】
- 判断整数序列是不是某二叉查找树的后序遍历的结果
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)