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

判断是不是二叉搜索树

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

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return bool布尔型
 */

#include <stdbool.h>
int max = 0;
struct TreeNode* t = NULL; // 储存最右叶子节点的根节点
bool is(struct TreeNode* root){
    // write code here
    if(root==NULL)return true;
    max=root->val;
    bool l=is(root->left);
    if(root->val<max) return false;
    else max=root->val;
    if(root->right != NULL) t = root;
    bool r=is(root->right);
    return r&&l;
}
bool isValidBST(struct TreeNode* root ) {
    // write code here
    bool i = is(root);
    if(t!= NULL && t->val > max) i = false;//没有这一步就无法比较最右叶子节点值和其根节点值的大小
    return i;
}

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务