二叉搜索树的后序遍历序列

来源:互联网 发布:百度知轩藏书 编辑:程序博客网 时间:2024/05/05 16:43

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是返回true,否则返回false。假设输入的数组的任意两个数字都不相同。

解答:二叉搜索树后序遍历最后访问的是根节点,根据根节点将数组分成两部分,前面一部分即左子树值小于根节点值,后面一部分即右子树的值大于根节点;再递归的检查左右子树。

bool PreOrder(int arry[],int n){if(arry==NULL||n<=0)return false;int x=arry[n-1];int i=0;while(i<n&&arry[i]<x)i++;int j=i;while(i<n){if(arry[i]<x)return false;i++;}bool left,right;if(j>0)left=PreOrder(arry,j);if(j<n-1)right=PreOrder(arry+j,n-j-1);return left&&right;}


0 0