[leetcode] 98 Validate Binary Search Tree

来源:互联网 发布:ebpocket 知乎 编辑:程序博客网 时间:2024/06/08 04:34

问题描述:

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keysless than the node's key.
  • The right subtree of a node contains only nodes with keysgreater than the node's key.
  • Both the left and right subtrees must also be binary search trees.

代码:

bool isValidBST(TreeNode *root) {  //C++        if(root == NULL||(root->left==NULL &&root->right==NULL))            return true;                int pre;        bool isFirst = true;        stack<TreeNode*> myStack;        TreeNode* p = root;        while(p!=NULL || !myStack.empty())        {            while(p!=NULL){                myStack.push(p);                p = p->left;            }            p = myStack.top();            if(isFirst){                isFirst = false;                pre = p->val;               }            else{                if(p->val <=pre)                    return false;                pre = p->val;            }            myStack.pop();            p = p->right;        }                        return true;    }


0 0