深度優先遍歷
- 思路:
- 根據二叉搜索樹特性,通過中序遍歷得到有序序列,驗證序列是否有序來判斷;
- 中序遍歷使用棧通過深度優先遍歷;
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool isValidBST(TreeNode* root) {std::stack<TreeNode*> stk;long long pre = (long long)(INT_MIN) - 1;TreeNode* node = root;while ((node != nullptr) || (!stk.empty())) {while (node != nullptr) {stk.push(node);node = node->left;}node = stk.top();stk.pop();if (node->val <= pre) {return false;}pre = node->val;node = node->right;}return true;}
};