您的位置:首页 > 职场人生

面试题24:二叉搜索树的后序遍历序列

2015-07-03 15:32 337 查看
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。

bool isPostOrder(vector<int>&num, int left, int right)
{
if (left == right)
return true;
int i = left;
for (; i < right; ++i)
{//找到左右子树的分界点
if (num[i] > num[right])
break;
}
//判断右子树中的所有元素是否都大于根元素
for (int j = i; j < right; ++j)
if (num[j] < num[right])
return false;

if (i==right)
return isPostOrder(num,left,i-1);
else
return isPostOrder(num,left,i-1) && isPostOrder(num,i,right-1);
}
bool isPostOrder(vector<int>&num)
{
if (num.size()==0)
return false;
return isPostOrder(num,0, num.size()-1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: