二叉搜索树后序遍历序列判断

来源:互联网 发布:蝉知cms 编辑:程序博客网 时间:2024/05/16 16:03

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

解析:1)所谓二叉搜索树,是指空树,或其左子树的元素都小于根元素,右子树的元素都大于根元素,且其左子树和子树都是二叉搜索树。

  2)二叉搜索树后序遍历序列有如下特征:a、最后一个元素是根元素;b、左侧元素可以分为left、right两部分数组,分别是根元素的左孩子和右孩子。

解题思路:

声明两个数组,存放根元素的左子树和子树,在存放过程中,若出现错误情况,可直接返回false,若分组成功,则分别对根元素的左子树和子树进行递归。具体代码如下所示:

 bool VerifySquenceOfBST(vector<int> sequence) {   int size=sequence.size();     if(0==size)            return false;if(1==size)            return true;        int midval;vector<int> left,right;        midval=sequence.back();sequence.pop_back();vector<int>::iterator it;for(it=sequence.begin();it!=sequence.end();it++)if(*it>midval){   if(left.empty ())left.push_back(1);    break;}else    left.push_back(*it);for(;it!=sequence.end();it++)if(*it>midval)   right.push_back(*it);<span style="white-space:pre"></span>else   return false;if(right.empty())right.push_back(1);return(VerifySquenceOfBST(left)&&VerifySquenceOfBST(right));    }

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 遴选到中央房子怎么办 转了户口社保怎么办 政府咨询电话打不通怎么办 公务员准考证丢了怎么办 行测老打40多分怎么办 网上没有报名的怎么办? 上大学转户口怎么办 梅菜扣肉勾芡怎么办 有个精神病妈妈怎么办 妈得了精神病该怎么办 思维不正常的人怎么办 妈妈是个精神病怎么办 我老婆有精神病怎么办 在郑州怎么办完税证明 中专没考上大专怎么办 考研两次没考上怎么办 2018造价员取消后怎么办 造价员取消了投标怎么办 造价员考试取消后怎么办 只拿到结业证怎么办 本科只有结业证怎么办 健身后肌肉水肿怎么办 大腿面肌肉疼怎么办 跑步后大腿酸疼怎么办? 运动后大腿胀痛怎么办 尔雅课程没看完怎么办 国家课程校本化怎么办 上海买房限购怎么办 投资公司要求回购股份怎么办 超过应届生落户年龄怎么办 造价员章到期了怎么办 造价员继续教育过期了怎么办 sd卡存储不够怎么办? 进项税大于销项税怎么办 公司扣员工奖金怎么办 墙面大面积有霉怎么办 电脑总是断网怎么办 造价师资格证书丢了怎么办 行测做题速度太慢怎么办 普通话准考证丢了怎么办 信用卡还款逾期了怎么办