#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
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:
// 解题思路:利用中序遍历,判断输出的二叉搜索树节点的数值是否是升序序列
// 注意:空结点,也是二叉搜索树
// 利用前一个节点pre来判断中序遍历过程输出的是否为升序序列,如果是则为二叉搜索树;反之,则不是;
TreeNode* pre = nullptr;
// 1.确定递归的入参及返回值
bool isValidBST(TreeNode* root) {
// 2.确定递归的终止条件
if(root == nullptr) return true;
// 3.确定单层递归逻辑:由于寻找一个不符合条件的节点,如果没有找到这个节点就相当于遍历了整个树;如果找到不符合的节点了,立刻返回;因此,递归函数有返回值;
bool left = isValidBST(root->left); // 左
if(pre != nullptr && root->val <= pre->val) return false; // 根
pre = root; // 更新前一个节点
bool right = isValidBST(root->right); // 右
return left && right;
}
};
【LeetCode-98 | 验证二叉搜索树】
原创CurryCoder 博主文章分类:LeetCode刷题记录 ©著作权
©著作权归作者所有:来自51CTO博客作者CurryCoder的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【LeetCode-98 | 验证二叉搜索树】
万物皆有裂痕,那是光照进来的地方。
#include 二叉搜索树 递归 -
【LeetCode 98】验证二叉搜索树
题目描述解题思路首先第一种方式可就是使用DFS递归遍历整棵树,检验每棵子树中是否都满足 左 < 根 < 右 de. * function Tr
二叉树 dfs leetcode 数据结构 javascript -
【LeetCode】98. 验证二叉搜索树
一、题
二叉树 算法 数据结构 leetcode python