“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”
今天写了二叉树的中序遍历,所以打算把热题100中关于二叉树的题,都解一遍,方便大家专项学习
一、题目描述
- 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。
二、思路分析
- 所谓二叉搜索树:左子树小于根,根需要小于右子树
- 这道题可以用之前的中序遍历
- 当前节点大于前一个节点,则继续比较
- 否则不满足条件返回false
三、AC 代码:
class Solution {
TreeNode pre = null;
public boolean isValidBST(TreeNode root) {
//校验为空则真
if(root == null){
return true;
}
// 访问左子树
if(!isValidBST(root.left)){
return false;
}
//当前节点小于前一个节点,则返回false
if(pre != null&&root.val<=pre.val){
return false;
}
pre = root;
//访问右子树
return isValidBST(root.right);
}
}
四、总结:
- 好了,代码撸完,我们
总结一下:-
运用中序遍历来解题
-
当前节点小于前一个节点则终止返回false
-
否则继续递归
-