LeetCode T98.Validate Binary Search Tree/验证二叉搜索树
本题有两种思路求解,一种是利用递归,逐层验证该节点是否符合BST的要求,空间复杂度较大。第二种是利用中序遍历二叉搜索树,判断序列是否升序来判断是否为二叉搜索树。
我的题解代码如下,leetcode上运行时间16ms,内存占用18.3MB
/** * 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: bool isValidBST(TreeNode* root) { stack<TreeNode*> stack; long long inorder = (long long)INT_MIN - 1; while (!stack.empty() || root != nullptr) { while (root != nullptr) { stack.push(root); root = root -> left; } root = stack.top(); stack.pop(); // 中序遍历后得到的是一个升序序列 if (root -> val <= inorder) return false; inorder = root -> val; root = root -> right; } return true; } };