题目描述
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题分析
使用中序遍历,序列结果满足递增的便是二叉搜索树,否则便不是。
class Solution {
public:
bool isValidBST(TreeNode* root) {
stack<TreeNode*> nodeStack;
long long preNodeVal=(long long)INT_MIN - 1;;
while(root!=nullptr || !nodeStack.empty()){
while(root!=nullptr){
nodeStack.push(root);
root=root->left;
}
root=nodeStack.top();
if(root->val<=preNodeVal)
return false;
preNodeVal=root->val;
nodeStack.pop();
root=root->right;
}
return true;
}
};