题解 | #判断是不是二叉搜索树#

判断是不是二叉搜索树

http://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b

中序遍历升序和二叉搜索树是充要条件,我们只要中序遍历把所有的值都放到一个数组中,在看数组是不是升序即可

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return bool布尔型
 */
void LDR(struct TreeNode* root , int p[10000],int* count){
    if(root==NULL){
        return;
    }
    
    LDR(root->left,p,count);
    p[(*count)++]=root->val;
    LDR(root->right, p, count);
}

bool isValidBST(struct TreeNode* root ) {
    // write code here
    if(root==NULL){
        return 0;
    }
    int p[10000];
    int count=0;
    LDR(root,p,&count);
    
    
    int i=0;
    while(i<count){ 
        int j=i+1;
        while(j<count){      //取出数组中第i个值,与其之后的所有有效值进行对比
            if(p[i]<p[j]){   //如果第i个值小于所有i之后的值,i++继续对比
                j++;
            }else{
                return 0;    //如果有一次第i个值大于i之后的值,即不是升序排列,返回false
            }
        }
        i++;
    }
    return 1;    //循环进行到底,都没有返回false,说明是升序,返回true
}
全部评论

相关推荐

01-14 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
程序员花海_:抓紧时间去找实习 项目其实只是玩具项目 脱离业务很远的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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