题解 | #二叉搜索树的后序遍历序列#

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

https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd

二叉搜索树表示根节点的值,大于其左子树的所有节点值,但小于右子树的所有节点值。根节点的子节点也按照次规则。
如果数组是二叉搜索树的后序遍历的话,那么数组最后一个数就是该树的根节点,数组分为两个区间,前面的区间为左子树的所有值
后面区间为右子树的所有值。所以必须保证前面区间的所有值都小于根节点,后面区间的所有值都大于根节点。以此判断是否为二叉搜索树的后序遍历数组

#include<stdbool.h>
bool VerifySquenceOfBST(int* sequence, int sequenceLen ) 
{
    // write code here
    if( !sequence || sequenceLen <= 0) return false;
    
    int root = sequence[sequenceLen-1]; //得到根节点
    
    int left = 0;
    
    for( ; left < sequenceLen-1; ++left  )                //判断左子树区间的值
    {
        if( sequence[left] > root ) break;
    }
    
    int right = left;
    
    for( ; right < sequenceLen - 1; ++right )            //判断右子树区间的值
    {
        if( sequence[right] < root ) return false;
    }
 
    bool left_output = true;
    if( left > 0 )  
    {
        left_output = VerifySquenceOfBST( sequence,left );            //左子树区间也要满足条件    递归调用
    }
    
    bool right_output = true;
    
    if( left < sequenceLen-1 ) 
    {
        right_output = VerifySquenceOfBST( sequence+left,sequenceLen-left-1 );          //右子树区间也要满足条件
    }
    
    
    return left_output&&right_output;            //同时满足则true
    
}

全部评论

相关推荐

03-04 15:02
已编辑
南京大学 Java
3.3&nbsp;一面岗位:&nbsp;后台开发部门:&nbsp;腾讯云场景题偏多,没问项目,没手撕,时长半小时1.&nbsp;自我介绍2.&nbsp;Java基础:-&nbsp;Treemap&nbsp;&amp;&nbsp;HashMap区别-&nbsp;ArrayList,&nbsp;添加n个数(n较大),会发生什么(应该是想问ArrayList的扩容机制)-&nbsp;考虑扩容的情况下这个过程的复杂度多少(说明复杂度计算思路即可,不需要给出具体的复杂度)3.&nbsp;并发:-&nbsp;项目里怎么用多线程的(一开始答了具体场景,不过面试官想听的是线程池,Synchronized这些...)-&nbsp;volatile&nbsp;&amp;&nbsp;synchronized-&nbsp;这里还问了一个,不过忘了...-&nbsp;假设项目里用了很多synchronized拖慢了系统效率,让你重构项目,你怎么设计?&nbsp;(真不会,回了一个参考乐观锁的设计用版本号之类的,然后这个话题就过了)4.&nbsp;JVM-&nbsp;JVM垃圾回收,怎么判断对象有没有被引用?&nbsp;(可达性分析)-&nbsp;GC&nbsp;Root有哪些-&nbsp;遇到OOM怎么排查5.&nbsp;场景-&nbsp;设计一个数据结构,用于在搜索框中搜索人名(不知道是不是这个意思,答了字典树这个结构)-&nbsp;使用字典树存储的话空间复杂度是多少(同前面,给出计算思路就行,不需要具体的值)-&nbsp;问了下简历上项目的背景,项目的具体内容没问-&nbsp;项目里的难点/印象深刻的点,咋解决的-&nbsp;针对上一点提了一个发散性的场景题(让你设计个xxx,你的思路)然后反问,无手撕。---春招第一面,被场景设计问题拷打麻了,就当练习了,不敢奢望能过,后续随缘了3.4更新,已挂
_追梦旅人_:大家考虑深圳睿联不,我们正在春招,可在我主页看岗位,感兴趣可直接投递~
查看15道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务