leecode第九十八题(验证二叉搜索树)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void jiance(TreeNode* root,bool& is_BST,long& temp) { if(root->left!=NULL) jiance(root->left,is_BST,temp); if(temp<root->val) temp=root->val; else is_BST=false; if(root->right!=NULL) jiance(root->right,is_BST,temp); } bool isValidBST(TreeNode* root) { if(root==NULL) return true; bool is_BST=true; long temp=LONG_MIN; jiance(root,is_BST,temp); return is_BST; } };
分析:
验证中序遍历为升序即可,只是在边界值有点恶心,我以为空树不算二叉搜索树,但其实算,而且leecode的输入[]和[null]答案居然不一样。最后想吐槽,结构里的val是int型,我设置temp一开始初始化INT_MIN,但是居然有个更小的。。